3

これまで、マスターブランチに何か間違ったことをコミットしてプッシュした場合、それを解決する方法は、gitログが次のようになっていると仮定します。

commit bad_hash
commit another_bad_hash
commit yet_another_bad_hash
commit good_hash

私が過去の状況を「解決」した方法は次のとおりでした:

git reset --hard good_hash
git push -f origin master

はい、それは機能します...しかし、コミット履歴を効果的に削除するため、あまりエレガントには見えませんでした。

それで、私のエゴを破壊した状況の後、私はより良い方法をチェックし、git revertのものを出しました、本質的に私は今使っています

git revert bad_hash another_bad_hash yet_another_bad_hash
git push origin master

git revertは3つのコミット(元に戻されたハッシュごとに1つ)を作成します。その後、リモートを更新するためにプッシュが必要です。

さて、質問は、この戦略は正しいですか?リポジトリの履歴はトランク化されていないため、リセットよりもはるかに良く見えます。最終的に誰かが問題が発生した理由を確認したい場合は、いつでも実行できます。

git diff bad_hash

この推論は正しいですか、それとも私はまだ基​​本的な概念を欠いていますか?

ありがとう

4

3 に答える 3

5

このワークフローでは、知っておく必要のあるすべてのことを説明します。それは私見の素晴らしいリソースです。

クレジット:Justin Hileman

GitMessワークフロー

于 2013-01-08T21:43:55.953 に答える
2

はい-git revertこれは、不正なコミットが行われ、後で削除された履歴を保持するため、この状況では絶対に適切なアプローチです。

于 2013-01-08T21:59:47.223 に答える
1

通常、「進行中の作業」の場合、一連のコミットを行い、次にgit rebase -i base履歴をクリーンアップするために実行します。読者(おそらく自分自身)は、将来、これが見やすくなると考えてください。

次にそれをプッシュすると、その履歴は不変であると見なし、git revertアプローチを優先します。

于 2013-01-08T22:36:58.050 に答える