web-dev-qa-db-ja.com

Git:コミットを「上」に移動する

masterで、機能が無効になっているとしましょう。私はブランチfeatureでその機能に取り組んでいるので、その機能を有効にするだけの特別なコミット$があります。次に、featureで行った変更をmasterにマージしますが、有効化のコミットはそのままにしておきます。だからそれは

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

ですから、$コミットを機能の上に移動して、それを実行したいとします。

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

どうすればいいですか?

29
Adrian Panasiuk

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

25
Carl Norum

featureで同じ順序でコミットを維持したい場合は、新しいブランチを作成して以下を実行する必要があります。それ以外の場合は、featureでこれを実行します

git rebase -i <sha for commit B>

コミット$をリストの一番下に移動します

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

質問では明確ではありませんでしたが、$がまったく必要ない場合は、移動するのではなくgit rebase -iの後に削除します。失くす。あなたが歴史を変えているように。

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

6
Schleis