2

github では、コミット 57d7cb274622f86e586c2595317264f23626e6c5 にいます。最新のコミットより前のいくつかのコミットである 5798ee7c56efd7e898d3115da6efe3d5e7cddb6c のコミットに戻したいです。これが私がやっていることです:

$ git fetch origin
$ git reset --hard origin/master
Head is now at  57d7cb274
$ git status
nothing to commit (working directory clean)
$git revert 5798ee7c56efd7e898d3115da6efe3d5e7cddb6c
#On branch master
nothing to commit (working directory clean)
$ git status
#On branch master
nothing to commit (working directory clean)

しかし、結果のコードは実際には 5798ee7c56efd7e898d3115da6efe3d5e7cddb6c のコミットではありません。

4

2 に答える 2

3

と を混同しgit revertていgit resetます。

これらすべてのコミットを実際にgit reset破棄すると、正確に指定されたコミットになります。

ただし、git revert実際には、元のコミットとまったく逆の別のコミットを追加するため、そのコミットを元に戻します。

ローカル リポジトリの使用git resetは問題ありませんが、コミットをプッシュすると、他の人がそれらのコミットを自分の作業に使用し始めている可能性があります。したがって、この場合は明示的な復帰コミットが必要です。

元に戻したい場合は、不要なコミットをそれぞれ元に戻す必要があることに注意してください。

于 2013-11-06T03:13:01.687 に答える
2

https://www.kernel.org/pub/software/scm/git/docs/git-revert.htmlにあるgit のドキュメントによると、git revert は指定されたコミットを元に戻すコミットを作成します。

したがって、git statusgit revert を実行した後にコミットするものがないと言う理由は、探している変更が既にコミットされているためです。

あなたが達成しようとしていることは完了したと思いますが、それが機能するかどうかを確認するテストには欠陥があります。

于 2013-11-06T02:59:46.013 に答える