2017-05-26 17 views
4

次のシナリオを想像してみてください。以前にリルートされたコミットを "元に戻す"方法

統合ブランチにマージされるべきではないコードを元に戻す必要があります。しかし、他のコミットがそれ以来起こっているので、リセットすることはできません。さらに、そのコミットを後で再適用することもできます。

逆コミットを適用するには、git revertを使用するだけで十分です。しかし、その変更をコミットしたい場合(たとえば、機能ブランチから)はどうなりますか?ブランチを再マージするだけですか?技術的にコードが既にマージされているので、それはうまくいくのでしょうか?

最後にそのマージを受け入れる準備ができたらどうしますか?

答えて

6

復帰コミットを元に戻してください。

git revert HASH_OF_REVERT_COMMIT 
+0

実際には機能しますか?笑。もしそうなら、とても簡単です。 –

0

シナリオを正しく理解していれば、統合ブランチにマージされたブランチを元に戻すことができます。その場合


、例えば、

git <your_branch> merged to master, pushed to origin/master. 

は、あなたが、原点にプッシュ何コミット戻したいです。

マージコミット/シングルコミットの元に戻す。

これは、単一コミットを元に戻し、マージコミットを元に戻すためにも使用されます。

例:

git revert -m 1 <commit-ID> 
Finished one revert. 
[master xxxxxxx] Revert "Merge branch 'xx/your_branch'" 
10 files changed, 0 insertions(+), 12 deletions(-) 

のgit元に戻すには、新しいコミットをご紹介します。変更をコミットし、それをorigin/masterまたは対応するorigin/branchにプッシュする必要があります。

差し戻しあなたがものを再マージすることを決定した場合、その回帰が固定されている何

戻しますか?

例:

git revert <commit-ID> 
Finished one revert. 
[master xxxxxxx] Revert "Merge branch 'xx/your_branch'" 
10 files changed, 12 insertions(+), 0 deletions(-) 

これを実行した後は、枝にあった導入された回帰を固定する前に出戻りました。後でそのブランチを元に戻すことができます

+0

もっと詳しい説明。我々は、機能ブランチからのすべてのマージされた変更を持つ開発ブランチを持っています。リリースをしたいのですが、コミットの中には問題があると判断されたものや、まだリリースしたくないものがあります。明らかに、私たちが望むコミットを選ぶことはできますが、それは履歴グラフには表示されないので気に入らないので、開発とリリースをマージして、望ましくないコミットを元に戻すことです。さて、後で我々はそれらのコミットをリリースしたいと思います。 –

+0

だから、可能であれば、復帰コミットを元に戻すのと同じくらい簡単です。 –

+0

もし、開発ブランチからリリースしたいのであれば、その場合、15個のコミットを元に戻したいのですが?その場合、その少し面倒です。しかし、revertはブランチに1つの余分なコミットを追加します。おそらく、あなたのリリースブランチに特定のコミットをマージしようとすることができますが、これはあなたが戻しを行うと同じ量の作業をします。単純な方法は、コミットしていない場合には、あなたのケースで復帰コミットを元に戻すことです。 – LethalProgrammer

関連する問題