2

マスター ブランチにコードがあり、dev という名前の別のブランチがあり、dev はマスター ブランチよりも数回コミットされています。マージする前に、マスター ブランチのバックアップ 'master-backup' も作成しました。

次に、dev を master にマージし、マージした master ブランチをサーバーにプッシュします (git push origin master)。

だから今、私のgitログは次のようになります

commit 5 (すでにマスターにありました)

コミット 4 (開発ブランチから来ました)

commit 3 (dev-branch から取得)

commit 2 (すでにマスターにありました)

commit 1 (dev から取得)

残りのコミットはすでに両方のブランチにありました

上記はシナリオです。今、私が立ち往生している質問は、dev ブランチのコミットを master から削除したい、古い master ブランチを元に戻したい、つまり master-backup にあるものは何でも、master でコミットしたいということです

どうすればそうできますか?dev の混在したコミットは既に master にマージされてプッシュされているため、dev ブランチを削除して master を元の状態に戻すにはどうすればよいですか?

4

2 に答える 2

4

すぐに修正するには、サーバー上でmaster次のように置き換えるだけです。master-backup

git push --force origin master-backup:master

少し長い答えについては、2 つの選択肢があります。最も簡単なのは を使用することですが、他の誰もこのブランチを見ていない場合にのみgit-reset使用してください。そうしないと、彼女の一日を台無しにしてしまいます。

1 つ前のコミットのバージョンmasterは と呼ばれmaster^ます。したがって、最初に使用git log master^して、保持したいバージョンであることを完全に確認masterしてから、チェックアウトします。

git reset --hard master^

次に、サーバーで更新します。

git push --force origin master

2番目のオプションはgit revert HEAD、マージのすべての変更を元に戻す新しいコミットを作成するために使用し、それをプッシュすることです。しかし、将来再びマージしようとすると、予期しない結果が生じます。

于 2013-01-17T19:30:22.163 に答える
0

master-backup を master としてプッシュしたいだけですか? git checkout master-backupそれからgit push -f origin master

于 2013-01-17T19:30:04.400 に答える