戻す - tortoisegit push 取り消し




リモートリポジトリにプッシュされたGitの特定のコミットを元に戻す (2)

特定のコミットを元に戻す最も簡単な方法は次のとおりです。

  • 頭や頭にない
  • リモートにプッシュされています。

最新のコミットでない場合は、

git reset HEAD

動作しません。 そしてそれは遠隔地に押し出されているので、

git rebase -i

そして

git rebase --onto

リモコンに何らかの問題が発生します。

さらに、私は歴史を本当に変更したくありません。 悪いコードがあった場合、それは歴史の中にあり、見ることができます。 私は作業コピーでそれを必要とし、逆マージコミットは気にしません。

つまり、次のsvnコマンドと同等のGitは何Git

svn merge -r 303:295 http://svn.example.com/repos/calc/trunk

それらのリビジョンのすべての変更を新しいコミットとして逆マージすることによって、295から302へのすべての変更を削除します。

svn merge -c -302 ^/trunk

302コミットを元に戻します。もちろん、それぞれのコミットからの変更を逆にマージする別のコミットを追加します。

私はそれがGitとかなり一般的なユースケースではかなり単純な操作でなければならないと思った。 原子コミットのポイントは他に何ですか?

私たちは、コミットが完全に原子的であることを確実にするためにstashingとすべてをステージングしています。それらの1つ以上の原子コミットを簡単に元に戻すことはできませんか?


git logを使用してコミットのハッシュを特定し、 git revert <commit>を使用してこれらの変更を削除する新しいコミットを作成します。 ある意味では、 git revertgit cherry-pick逆です。後者はパッチを欠けているブランチに適用し、前者はパッチをブランチから削除します。


すでにプッシュされているため、履歴を直接操作しないでください。 git revertはコミット履歴を操作しないように、新しいコミットを使って特定の変更をコミットからgit revertに戻します。





git-revert