2013-05-28 8 views
5

フィーチャブランチを元に戻すにはどうすればよいですか?完成した新しいフィーチャーsupercool-featureを追加して(開発に統合してフィーチャーブランチを削除する)、それがリリースに入ったとしましょう。しかし、あなたのユーザーは本当にこれが嫌いですsupercool-feature。すでに開発とリリースに統合されているこの機能を元に戻す/巻き戻し/元に戻す方法はありますか?完成したフィーチャブランチを元に戻す

私はバージョン管理を行うためにSourceTreeを使用しています。

+1

さてあなたは、マージを戻すないZでありますそれよりも複雑ですが、詳細はコードやテストなどの整理方法にあります。 –

+0

これは実際にgit-flow固有の質問ではありません。どんなgit-flowがあなたのためにしたのかは、開発からフィーチャーブランチを作成してから、それをマージして開発することです。 git-flowには魔法のようなものはありません。それは単なるgitです。 –

+0

@AlexBrownどうすればマージを元に戻すことができますか? git-flowプロセスの仕組みに精通しているかどうかはわかりません。しかし、git-flowでフィーチャーを完成させると、それは "開発"ブランチにマージされ、フィーチャーブランチは削除されます。リリースを決定すると、開発から新しいブランチを作成し、リリース固有の変更を行い、これを「マスター」にマージします。では、開発に統合された「スーパークール機能」をどのように元に戻すのでしょうか? –

答えて

12

実行

git revert -m 1 <sha1 of M> 

説明

あなたの状況は次のようにについてです。このコマンドを実行します。

A-B-----C---D-M  # master 
    \  /
    X-Y---Z-  # supercool-feature 

A、B、C及びDはしていましたあなたのマスターブラジャーnch、X、Y、Zをあなたのフィーチャーブランチに追加します。あなたがしたときgit merge supercool-feature Gitはあなたのために "merge commit" Mを作成しました。このコミットは、機能ブランチからのすべてのコミットと、マージの競合を修正する可能な修正を囲みます。したがって、revertがコミットすると、フィーチャーブランチからのすべての変更がもう一度消えます。

+1

+1 ASCIIアートを作成するための+1 :) – bigge

+0

devils advocate:マスター(CD)のすべてではなく、スーパークール機能XZYからすべてを削除する方法はどうですか?マージは対称です... – mnagel

+0

マージは対称ではありません。 'git merge'は、マージするブランチからチェンジセットを探します(' git diff B ..Z')、それを1回のコミットでスクラッシュします。 –

1

実際には、そのコマンドが少し明らかに...

ブランチ含むX、Yに後退Mを削除
git revert -m 1 <sha1 of M> 

、メインライン1

関連する問題