34

どの非対話型gitコマンドがBeforeからAfterへの変更を実現しますか?

前:

A---B---C---D

後:

A---C'---B'---D'
4

4 に答える 4

33

あなたの場合、インタラクティブをリベースできます。git rebase -i HEAD~4次に、ピックを並べ替えることができます

たとえば、ブランチにさらに 3 つのファイルを追加してみましょう。

git add A
git commit -m "A"

git add B
git commit -m "B"

git add C
git commit -m "C"

ショートログは次のようになります。

$ git shortlog
 (3):
      A
      B
      C

B を C で並べ替えたい場合:

$ git rebase -i HEAD~2
pick 1f9133d B
pick 33f41be C

次のように並べ替えるだけです。

pick 33f41be C
pick 1f9133d B

書き終わったら、ショートログを参照してください。

$ git shortlog
 (3):
      A
      C
      B

並べ替えることで、すべてのコミットで同じことができます。それはあなたが見るものはあなたが得るものであり、それはかなりクールです:)

于 2011-02-13T02:19:49.927 に答える
25

これを試して:

git reset --hard A
git cherry-pick C
git cherry-pick B
git cherry-pick D

という方法もあるのかもしれgit rebaseませんが、よくわかりませんでした。

于 2011-02-12T22:59:16.540 に答える
6

非対話的な方法で git rebase --interactive を実行するにはどうすればよいですか? を参照してください。非インタラクティブな方法で git rebase --interactive を使用するため。

次に、コミットを並べ替えるための正式な基準がある場合は、それをスクリプト化できます。たとえば、元のコミット日付でコミットを並べ替えるために git マージを本当にフラット化するを参照してください。

于 2012-09-12T19:55:14.710 に答える