2

質問

違いは何ですか:

$ git remote add origin git@github.com:yourname/yourproject.git
$ git config remote.origin.push refs/heads/master:refs/heads/master
$ git push

と:

$ git remote add origin git@github.com:yourname/yourproject.git
$ git push origin master -u

2番目のバージョンは最初のバージョンよりも単純に新しくて短いですか、それとも他の違いがありますか?

背景調査

Git 1.7.0以降、この--set-upstreamオプションは。で使用できますgit pushgit pushマニュアルによると:

-u, --set-upstream
    For every branch that is up to date or successfully pushed, add upstream
    (tracking) reference, used by argument-less git-pull(1) and other commands. For
    more information, see branch.<name>.merge in git-config(1).
4

1 に答える 1

8

いいえ、これらは非常に異なります。最初の構成設定でremote.<name>.pushは、他のrefspecが指定されていない場合に、プッシュするためのデフォルトのrefspecを設定します。デフォルトでは、実行git push originすると、その名前のブランチがリモートにすでに存在する限り、一致する名前のブランチにすべてのブランチがプッシュされます。行った後:

git config remote.origin.push refs/heads/master:refs/heads/master

git push origin...あなたはそれがちょうどにプッシュmasterすることがわかりますmaster

引用するもう1つのコマンドはgit push -u origin master、プッシュが成功した場合に2つの異なる構成オプションを設定します。

  • branch.master.remoteに設定されていますorigin
  • branch.master.mergeに設定されていますrefs/heads/master

これらは基本的に、masterinoriginをブランチのデフォルトの「アップストリーム」ブランチと見なす必要があることを示していますmaster。それらの最も明白な効果はgit pull、あなたがオンmasterになっているときのデフォルトのアクションを提供することですが、他のさまざまな状況でも使用されます。たとえば、上部に役立つメッセージを提供して、と比較されるgit status場所を示します。ただし、これらの設定は、configオプションを(または最近のバージョンで)に設定していない限り、デフォルトのアクションを通知するためには使用されません。masterorigin/mastergit pushgit push originpush.defaulttrackingupstream

したがって、非常に大まかな要約として、設定remote.<name>.pushはのデフォルトのアクションに影響を与えますがgit pushgit push -u origin master設定オプションは通常はのアクションにのみ影響を与えますgit pull

于 2011-10-12T11:26:58.867 に答える