2013-01-24 19 views
18

master私は機能が無効になっています。 ブランチfeatureでその機能を使用していますので、その機能を有効にする特別なコミット$があります。 ここでは、featureで行った変更をmasterにマージしますが、有効化コミットを維持しておきます。Git: "上に"コミットを移動

new feature: A--B--C--D--$ 

は、どのように私はそれをやって行くだろう。だから、それでは、私は機能の上にコミット$を移動することで、それをしたいとしましょう

main: A--B--X--Y 
feature: A--B--$--C--D 

ようなものですか?

答えて

20

git rebase -i Bを入力し、$をエディタに表示されるリストの最後に移動します。開いたファイルの最初の行から開始します。また、その行を完全に削除するだけでブランチの履歴からそのコミットを削除することもできます。

+0

ありがとうございます!私がリベースを使うべきであることが明らかになった今、私は以前何らかの理由でチェリーピックでそれを解決しようと努力し続けました。 –

+0

@AdrianPanasiuk、あなたもcherry-pickを使うことができますが、おそらくもっと努力するでしょう。 –

5

featureに同じ順序でコミットしておきたい場合は、新しいブランチを作成して次の手順を実行する必要があります。そうでなければ、ただfeature

git rebase -i <sha for commit B> 

でこれを行う移動が

git checkout master 
git rebase feature <or the other branch name> 

リストの一番下に$をコミットそれは質問に私には明確ではありませんでしたが、あなたは$まったく望んでいなかった場合git rebase -iの後にそれを削除してください。あなたがそれを失わないように、あなたは新しい支店でこれをしたいでしょうが。あなたは歴史を変えています。

これはまた、書き直し履歴が悪いので、ブランチfeatureがリモートにプッシュされていないことを前提としています。

関連する問題