2

ブランチにいくつかの変更を加え、コミットして master にマージし、リモートにプッシュしました。その後、マージに関連してより多くのコミットを master に行い、それらをプッシュしました。

結局のところ、そのマージとその後の変更は、問題を解決するための間違った方法だったので、マージの直前に戻したいと考えています。初心者向けSO Git ガイドを見ると、reset コマンドが表示されますが、既にプッシュされている変更については、reset を呼び出してから push するだけで十分です。

これは私たちのケースではありませんが、マージしていくつかの修正コミットを行った後、後でプッシュした後、他に無関係な master へのプッシュがあったとします。

4

3 に答える 3

3

There are two approaches here. The first is to reset your local branch, as if these changes never existed, and then force update the remote branch:

git rest <hash>
git push https://git.... --force

The main problem with this approach is the difficulty it creates for anyone else working with your remote.

The more "elegant" solution, IMHO, is to revert the change - i.e., acknowledge a mistake has been made, and rectify it, preserving history.

You can use git revert <hash> to create an additional commit that undoes the problematic commit, and then just git push it like every other commit. The advantage is that you can always amend the commit message, and explain exactly why the original solution was faulty, and why it had to be undone.

于 2013-11-01T14:58:13.900 に答える
1
git reset --hard <tag/branch/commit id>

詳細については、ここを確認してください

于 2013-11-01T14:56:06.647 に答える
1

質問はすでにここで行われました

プライベート リモート リポジトリで git 履歴を書き換える

他の人がリポジトリで git pull を実行した場合、最も推奨されるアプローチは、コミット検索を元に戻すことです。そのような多くの質問があり、多くの回答があり、最も適切なものを見つけてください。

今後これらの問題を回避するには、満足のいく結果が得られるまで、常に一時的な「トピック」ブランチを使用してください。

于 2013-11-01T15:01:50.283 に答える