web-dev-qa-db-ja.com

Git:間違ったブランチから新しいブランチを作成しました

私は通常、開発から新しいブランチを作成します

git checkout -b new-feature develop

最後のコミットの後、私はマージして開発します

git checkout develop
git merge new-feature

しかし、今回はnew-feature2からnew-featureブランチを作成したため、developにマージできません。

new-feature2の親をdevelopに切り替える方法はありますか?

(私が作業したファイルはdevelopと同じバージョンだったので、これをマージする必要はありません。)

35
hakunin

機能をメインベースにリベースできます。

git checkout new-feature2  
git rebase --onto develop new-feature new-feature2
# rebase the stuff from new-feature to new-feature2 onto develop branch

またはチェリーピックを使用して「手動で」実行します

git checkout develop
git log --oneline new-feature..new-feature2 
# for every commit call:
git cherry-pick <commit-id> # note, newer versions of cherry-pick allow multiple commits at once
47
reto

インタラクティブなリベースを見たことがありますか?

git rebase -i develop

これは非常に単純なソリューションです。そのブランチからのすべてのコミットが表示されます。不要なブランチから「ピック」行を削除するだけです。

14
mrm

パッチを作成し、developブランチにチェックアウトして、パッチを適用するのはどうですか?

git checkout new-feature2

git format-patch new-feature

git checkout develop

git am name-of-the-patch.patch
4
Jan Vorcak

git diffおよびgit applyを使用することもできます。

git diff new-feature..new-feature2 | git apply -
1
robinst