2016-07-08 25 views
0

git fetch B + merge Bとmerge origin/Bの違いは何ですか?git fetch B + git merge Bとgit merge originの違いは何ですか?

上記のシーケンスでは、マージの結果は同じですが、結果は異なります。私は、ローカルのマージ操作で利用できるように、リモートブランチをローカルに取得するための "fetch"コマンドを期待していました。フェッチが行われた後、ローカルブランチからのマージが、元のマージと同じ操作になると予想しました。私はこの期待に間違っていますか?

答えて

0

フェッチはコミットのみをダウンロードしますが、ブランチのローカルコピーには適用しません。 2つの操作を同等にするには、origin/Bを(ローカル)Bと最初にマージする必要があります。そうしないと、ローカルBのHEADは変更されず、ブランチは "後ろ向き"になります(ローカルBをチェックアウトしたときにgit statusを実行するか、git branch -vvを実行して確認できます)。

これは、git checkout B/git checkout origin/Bと同じ不一致であることに注意してください。

0
  • git fetch origin develop

    (ローカルに存在する)リモートブランチorigin/develop

  • git merge develop

    にリモートでdevelopブランチは現在のブランチにローカルdevelopブランチをマージします取得します。 developが現在チェックアウトされていると仮定すると、これは何もしません。

  • git merge origin/develop

    現在のブランチにローカルorigin/developブランチをマージします。 origin/developは、originリモートのローカルリポジトリにあるdevelopのリモートブランチを指します。これは、最初のステップでフェッチしたブランチをマージします。

+0

フィーチャー/ XXXブランチ – shamil