特定のコミットを元に戻す最も簡単な方法は何ですか?
- 頭の中ではない
- リモートにプッシュされました。
最新のコミットでない場合は、
git reset HEAD
動作しません。リモートにプッシュされているため、
git rebase -i
そして
git rebase --onto
リモコンに何らかの問題が発生します。
さらに、私は履歴を本当に変更したくありません。悪いコードがあった場合、それは履歴に存在し、確認できます。私は単にそれを作業コピーに残したいだけであり、リバースマージコミットは気にしません。
言い換えれば、ギット次の svn コマンドと同等です。
svn merge -r 303:295 http://svn.example.com/repos/calc/trunk
これにより、295 から 302 までのすべての変更が逆マージされ、新しいコミットとして削除されます。
svn merge -c -302 ^/trunk
これは、当然ながら、それぞれのコミットからの変更を逆にマージする別のコミットを追加することによって、302 コミットを元に戻します。
これは Git では非常に単純な操作であり、かなり一般的な使用例であるはずだと思いました。アトミック コミットのポイントは他に何があるのでしょうか?
ステージングがあります隠すコミットが完全にアトミックであることを保証するために、1 つ以上のアトミック コミットを簡単に元に戻すことができるべきではないでしょうか?
ベストアンサー1
を使用してコミットのハッシュを識別しgit log
、 を使用してgit revert <commit>
これらの変更を削除する新しいコミットを作成します。ある意味では、git revert
は の逆ですgit cherry-pick
。後者はパッチがないブランチにパッチを適用し、前者はパッチがあるブランチからパッチを削除します。