2017-01-13 15 views
1

私たちのプロジェクトでは、core-updateブランチで作業していました。私のドキュメントを読んで、私たちのソリューションに対する依存関係の更新をテストすることができなかった同僚は、プルリクエストをトリガし、直ちにVisual Studio Toolsを使用してマージしました。私のマスターブランチは、起点ブランチに比べて遅れています:私は何ができますか?

は今、私のgitの状態/歴史/状態があります:

enter image description here

事実である:私はgit pullをすれば、それは私が推測するコミットマージを作成します。 どのようにして "変更を取得"し、元のマスターヘッドを元のマスターヘッドに合わせるか?私はGitで非常に新しく、不要なマージコミットを作成して、内部マスターをリモートマスターにマージしたくありません。

+0

を。 – cst1992

答えて

3

git pull何が必要でしょう と呼ばれる(現在のブランチがmasterであると仮定した場合)。

状況にマージコミットを作成する理由はありません。マージされる2つのブランチが分岐した場合、マージコミットが作成されます。あなたのローカルmasterブランチはorigin/masterの3コミットですが、先行していません。

masterにあるものはすべて、すでにorigin/masterに存在します。そのため、git pull(またはgit merge origin/master)はmasterブランチをorigin/masterが示すコミットに早送りします。 https://www.git-scm.com/docs/git-pull

--ff 
When the merge resolves as a fast-forward, only update the branch pointer, 
without creating a merge commit. This is the default behavior. 

から

+0

ありがとうございます。私はgitがFFをやるのを知らなかった。 – BlackHoleGalaxy

+0

'git fetch'の後ろに' git status'が続くと、 'git pull'が行うことを知ることができます(' git pull'は 'git fetch; git merge'のショートカットです)。それはあなたに「早送り」が可能であることを伝えます。 「早送り」は特別な種類のマージであり、必要でないために新しいコミットを作成しません。早送りは、ローカルブランチがリモートブランチの祖先である場合(リモートブランチは変更されましたが、ローカルブランチは最後に同期してから変更されませんでした)、可能です。早送りは、基本的にローカルブランチをリモートブランチと同じコミットに移動します。 – axiac

+0

私の例では、ローカルリポジトリにすべてがありました。リモートのみがブランチを "マージ"しましたが、それ以上は追加されませんでした。だから私の地元は、PRから作られたマージコミットを取得して、頭を動かすだけで同じことをすることができますか? – BlackHoleGalaxy

2

masterブランチにいる間にgit merge origin/masterを実行するだけで済みます。

これは早送りマージを行い、マスターブランチポインタをorigin/masterが指しているコミットに更新します。

FFがマージ:

Basic Branching and Merging

をC4は、あなたがしている直接前方にコミットC2のだったあなたは にマージされた分岐の修正プログラムによって指さコミット、Gitは単に ポインタを移動しているので前方に別の言い方をすれば、最初に コミットの履歴に従ってコミットをコミットしようとするときに をマージしようとすると、Gitはマージする相違のある作業がないのでポインタを前方に移動させることで作業を単純化します。 「早送り。」

1

だから、デフォルトでは(あなたのgitの設定が異なるデフォルト値を設定しない限り)、git pullを実行し、マージコミットがありません。あなたはmasterにしている場合は

2

は、単に実行します。それはorigin/masterの直接の祖先であるため、この場合は

$ git merge origin/master 

それは、masterブランチを早送りします。

あなたはケースmasterにコミットマージを作成誤っないようにしたい場合は、--ff-onlyオプションを使用することができ、origin/masterから分岐しました:ただFFのマージを行う

$ git merge --ff-only origin/master 
関連する問題