3

私は多くの投稿を検索しgit reset --hard <commit>、時期尚早にマージされたブランチをリセットして、履歴を少しコミットした状態に戻しました。「マスター」の現在の状態は良さそうに見えますがgit status、私のローカル ブランチはオリジン/マスターより 24 コミット遅れており、早送りできます。最初にオリジン/マスターを再度マージしないとプッシュできません。これらのコミットをスキップして「いらない」と言う方法はありますか?

これは中央レポのセットアップであり、私の同僚の 1 人が誤って彼の長期にわたる開発ブランチを master にマージし、バックトラックする方法を理解できなかったので、私は彼のためにそれをやろうとしていました.

コマンドの要約 (記憶から、2 日間の試練でした)

マスターをフェッチしてチェックしたときに間違いを発見し、同僚に知らせました。彼はそれをリセットできなかったので...私はしました

git merge master origin/master
git reset --hard <commit_I_wanted>
git push # is rejected
git status # gives me the "behind by x commits, can be fast-forwarded" message

ありがとう、ハンス

4

1 に答える 1

3

git 履歴が正しいバージョンであり、同僚が変更を加えていないことが確実な場合は、次のコマンドを使用できます。

git push --force

将来的には、git revert履歴を書き換える代わりに、変更を元に戻す新しいコミットを作成する代わりに使用します。

繰り返しますが、 git push --force はリモート エンドで履歴を書き換えます。あなたは警告されました。

于 2012-06-19T15:57:20.820 に答える