3

マスターブランチを機能ブランチとマージすることで問題が発生しました。そこで、gitがマージを処理する方法と、マスターブランチからの変更で機能ブランチを更新するための最良の方法を理解しようとしました。私は2つの解決策を見つけました。

番号1:

git checkout feature_branch
git merge master

2番:

git checkout feature_branch
git pull origin master // Read: pull the changes from origin/master into my current local branch 'feature_branch'

私は2番目の解決策について一度だけ読んだのに対し、最初の解決策はかなり頻繁に目にしました。常にコミットで完了するのでgit merge、私は2番目のものがもっと好きですが、それが本当に期待どおりに機能しているかどうか疑問に思います。

ご不明な点がございましたら、お気軽にお問い合わせください。

4

2 に答える 2

4

最初の例では、フィーチャー ブランチに移動し、ローカルマスター ブランチの最新バージョンを取り込みます。このバージョンのマスターは、リモートとの最新のやり取りが単純なフェッチであったかプル (フェッチとマージ) であったかによって、追跡ブランチ (オリジン/マスター) で最新である場合とそうでない場合があります。

2 番目の例では、基本的に何が起こっているかというと、最初にマスター ブランチがリモートから取得され、「追跡」ブランチ (origin/master) に配置されます。次に、そのバージョンが現在の (開発) ブランチにマージされます。

git プロセスの詳細については、git ブランチ、フォーク、フェッチ、マージ、リベース、およびクローンを参照してください。違いは何ですか?

于 2012-11-22T03:06:41.370 に答える
3

プルは、マージを伴う単なるフェッチです。両方の例でマージを行っていますが、2 番目の例には 2 番目のリポジトリが含まれています。それらの間で選択することはあまりありません。

フィーチャー ブランチが非公開の場合は、master をマージして master からの変更を組み込むのではなく、master の新しいチップにリベースすることを検討してください。このようにして、履歴にマージがなくても機能ブランチ トラック マスターを保持できます。

于 2012-11-21T23:00:48.477 に答える