私のリポジトリには、私が取り組んでいるaq
というブランチがあります。
それから私はmaster
の新しい作業とバグをコミットしました。
それらのコミットをaq
ブランチに入れるための最善の方法は何ですか? master
から別の新しいブランチを作成し、それをaq
とマージしますか?
aq
ブランチを調べて、master
からリベースしてください。
git checkout aq
git rebase master
あなたがあなたのaqブランチにいるとき、あなたはちょうどgit merge Origin/master
をできるはずです。
git checkout aq
git merge Origin/master
まずマスターにチェックアウトします。
git checkout master
すべての変更、修正プログラム、コミットを行い、マスターをプッシュします。
あなたのブランチ 'aq'に戻り、そこでmasterをマージします。
git checkout aq
git merge master
あなたの枝はマスターと最新の状態になります。マージの良い基本的な例は3.2 Gitの分岐 - 基本的な分岐とマージです。
マスターのバグ修正が他のコミットに含まれていないという保証はありません。したがって、単純にマージすることはできません。行う
git checkout aq
git cherry-pick commit1
git cherry-pick commit2
git cherry-pick commit3
...
それらのコミットがバグ修正を表すと仮定します。
これからは、別のブランチにバグ修正を続けてください。あなたはただできるようになるでしょう
git merge hotfixes
それらすべてを通常のdevブランチにまとめたいとき。
関連するcherry-pick
がブランチaq
にコミットするか、ブランチmaster
をブランチaq
にマージします。
簡単な方法
# 1. Create a new remote branch A base on last master
# 2. Checkout A
# 3. Merge aq to A
私にとっては、すでに変更が加えられていて、ベースブランチから最新のものが欲しいと思っていました。私はrebase
を実行することができませんでした、そして、cherry-pick
は永遠に取っていたでしょう、それで私は以下をしました:
git fetch Origin <base branch name>
git merge FETCH_HEAD
だからこの場合:
git fetch Origin master
git merge FETCH_HEAD
aq
と結合します
git checkout master
git pull
git checkout aq
git merge --no-ff master
git Push
あなたはいくつかの選択肢があります。コミット名を保持するブランチにgit rebase master aq
しますが、これがリモートブランチの場合はREBASEしないでください。コミット名を保持することを気にしないのであれば、git merge master aq
できます。もしあなたがコミット名を残しておき、それがリモートブランチであればgit cherry-pick <commit hash>
はあなたのブランチにコミットします。