git - 現在のプッシュとアップストリームのプッシュ(追跡) 質問する

git - 現在のプッシュとアップストリームのプッシュ(追跡) 質問する

私はgit manでpushコマンドについて読みましたが、まだ正確な違いがわかりません。現在そして上流のに設定するプッシュ.デフォルト

私たちのチームはプッシュだけを行い、現在作業中のブランチの変更のみがプッシュされるようにしたいです。私の理解では、このブランチは私がプッシュしたときに*(星)でマークされたブランチです。git ブランチ

助けてくれてありがとう。

ベストアンサー1

質問は押しているのですか?どこに:

  • current:

    • 「現在のブランチのみ(他のブランチはありません)」
    • どこに「同じ名前のブランチ(存在しない場合は作成されます)アップストリームリポジトリ
  • upstream:

    • 「現在のブランチのみ」
    • どこに「」は上流リポジトリの任意のブランチ(必ずしも同じ名前である必要はありません)を指します上流ブランチとして割り当てられましたプッシュするローカル ブランチ用です。

としてここで説明Git2.0 ではさらに、次の新しいデフォルトが導入されますpush.default:simple

simpleのようなものですupstreamただし、アップストリームにも同じ名前が付けられている必要があり、そうでないとプッシュは失敗します。


1つのブランチのみをプッシュすると(モード「simple」、「current」、または「upstream」)、シナリオ一部のブランチがプッシュの準備ができていない場合でも、一致するすべてのブランチがプッシュされます (matching長い間デフォルトであったモード " ")。

(master)> git push
...
To [email protected]:jkubicek/my_proj.git
   21b430d..dd378ca  master -> master
 ! [rejected]        release -> release (non-fast-forward)
error: failed to push some refs to '[email protected]:jkubicek/my_proj.git'
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. 
hint: If you did not intend to push that branch, you may want to
hint: specify branches to push or set the 'push.default' configuration
hint: variable to 'current' or 'upstream' to push only the current branch.

current2つの(とupstream)の違いは、引く(リモートからブランチに何をプルしますか?):

  • " current" をプッシュしても、現在のブランチに上流ブランチがあるということではありません。Bつまり、 " " ブランチをプッシュしているときは が設定されていません。つまり、 にプルするとき、git はどのブランチをプルするかわかりません。remote/B
    branch.B.mergecurrent
    B

  • " upstream" をプッシュすると、現在のブランチに上流ブランチがあることを意味します。Bつまり、remote/B
    branch.B.merge upstream設定します。" " ブランチをプッシュするとき。
    つまり、 にプルするときB、git はどのブランチをプルするかを認識します (また、どのリモート リポジトリであるかも認識します: branch.B.remote)

おすすめ記事