私は新しいブランチで新しい機能を開発しており、私のブランチではかなりの数の変更をコミットしています。
マスターブランチを新しいブランチにマージして最新の状態に保ち、新しい機能が完了したらマージの競合があまり発生しないようにすることはできますか?
git merge master
または git rebase master
のいずれかを使用できます。この場合、私は git rebase を使用します。
git rebase
は、機能ブランチの変更がマスターブランチの変更に加えられたかのように作成するため、バージョングラフが単純になります。
git rebase manual から例をとると、feature
のgit rebase master
:
A---B---C feature A'--B'--C' feature
/ --rebase--> /
D---E---F---G master D---E---F---G master
ただし、git rebase
は、ブランチが配布されていない場合にのみ適しています。そうしないと、古いコミットA、B、Cが新しいコミットA '、B'、 C 'と、以前はなかったFとG。
ブランチfeature
のgit rebase master
の後の実際の結果は次のとおりです。
( A---B---C )
/
/ A'--B'--C' feature
/ /
D---E---F---G master
コミットA、B、Cはリベース後にぶら下がっていますが、git reflog feature
を介して到達可能です。
誰かがブランチをプルした場合、またはブランチをどこかにプッシュした場合は、代わりにブランチをマージして、反対側での混乱と余分な作業を回避する必要があります。 上流のリベースからの回復 を参照してください。
これはブランチfeature
のgit merge master
の結果です:
A---B---C feature A---B---C---M feature
/ --merge--> / ,---’
D---E---F---G master D---E---F---G master
または、ブランチmaster
にgit merge feature
を置くと、次のようになります。
A---B---C feature A---B---C feature
/ --merge--> / \
D---E---F---G master D---E---F---G---M master