git push -uはどういう意味ですか?


323

gitには2つの異なるバージョンがあります。1.6.2バージョンでgit pushは、-uオプションはありません。1.7.xバージョンでのみ表示されます。

ドキュメントから、これ-uは変数に関連しています

branch.<name>.merge

の中でgit config。この変数について以下で説明します。

Defines, together with branch.<name>.remote, the upstream branch 
for the given branch. It tells git fetch/git pull which branch to merge.

上流ブランチとは何ですか?


回答:


360

「アップストリーム」とは、GitHubリポジトリなど、他の人がプルするメインリポジトリを指します。-uオプションは、自動的にそのアップストリームを設定し、リポジトリを中央のリポジトリにリンクします。そうすれば、将来的には、Gitはどこにプッシュしたいか、どこからプルしたいかを「知っている」ので、引数を使用してgit pullもしgit pushなくてもかまいません。少し下に、この記事ではこの概念を説明し、実証します。


19
私はあなたにリンクした資料では、このアウトを指してないことがわかりますが、落とし穴のそれの何か以来、私はそれの価値が指摘思うとにプッシュされるブランチgit push 上流分岐の構成に影響されないあなたが持っていない限りpush.defaultセットをto tracking(またはそれupstream以降のバージョンのgit)。
Mark Longair、2011

eclipse egitが両方を提供する理由がわかりませんか?
HaveAGuess

23
@HaveAGuessおそらく同じ理由で、Eclipseも悲惨さと絶望の両方を提供しています。
twiz 2015

9

これはもはや最新ではありません!

Push.default is unset; its implicit value has changed in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the traditional behavior, use:

  git config --global push.default matching

To squelch this message and adopt the new behavior now, use:

  git config --global push.default simple

When push.default is set to 'matching', git will push local branches
to the remote branches that already exist with the same name.

Since Git 2.0, Git defaults to the more conservative 'simple'
behavior, which only pushes the current branch to the corresponding
remote branch that 'git pull' uses to update the current branch.

1
しかし、フラグ-uは今のところ何を表していますか?GitHubでは、新しいリポジトリを作成するときにこのフラグを使用することをお勧めします...
Jean Paul

8
@JeanPaul--uオプションは次のことを行います。最新であるか、正常にプッシュされたすべてのブランチに対して、引数なしのgit-pullおよびその他のコマンドで使用される上流(追跡)参照を追加します。そのため、-uオプションを使用してローカルブランチをプッシュした後、このローカルブランチは自動的にリモートブランチにリンクされ、引数なしでgit pullを使用できます。
Peter Piper
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.