2

私はブランチ「開発」で作業し、マスターとマージする準備ができたら、インタラクティブなリベースを使用して、すべての小さなコミットを1つの機能に押しつぶします。これは、マスターの上に適用されるコミットを含みます。

うまく機能します。私が抱えている唯一の問題は、コミットにラベルが付けられているのが最初の小さなコミットの時間であるということです。それが「選択」される唯一のコミットであり、残りは「押しつぶされる」ので、それは理にかなっています。一括コミットに最初のコミットではなく最後の小さなコミットの時刻をラベル付けする方法を知っている人はいますか?最初のコミットを「編集」し、後のコミットをこのコミットに押しつぶすことでこれを行うことができる場合があります(おそらくtimeプロパティを編集できます)が、より良い方法はありますか?

4

2 に答える 2

5

コミットを再配置して目的の日付のコミットを選択できない場合(たとえば、最後のコミットが最初のコミットの親の上にきれいに適用されないため)、次の方法を試すことができます。

開発コミットを開発時に単一のコミットにまとめた場合は、開発git showのreflogを使用して、元の最終コミットの日付を抽出し(押しつぶす前)、新しいコミットの日付をで修正できます。git commit --date=

git commit --amend -C HEAD --date="$(git show --pretty=format:%ad develop@{1})"

--amendこれにより、HEADコミットが()修正され、次のようになります。

  • HEADからのコミットメッセージと日付があります
    -C HEAD;これを使用すると、変更を加えずにすぐに終了するためだけにコミットメッセージのエディターを起動する必要がなくなります。実際にコミットメッセージを編集したり変更したりする場合は、この部分をオフのままにします。日にち)
  • その日付は
    --date=
    • 開発の最新の以前のヒントと同じ日付
      "$(git show --pretty=format:%ad develop@{1})")。

develop@{1}希望する日付がない場合は、を使用git log -g developして、希望する日付のコミットを見つけることができます。

于 2010-10-19T19:29:55.733 に答える
4

コミットを並べ替えて、保持したいタイムスタンプを持つものがpick編集squashされたものになり、それから他のすべてがそのものになります。

于 2010-10-19T18:58:51.483 に答える