私は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.
current
2つの(とupstream
)の違いは、引く(リモートからブランチに何をプルしますか?):
"
current
" をプッシュしても、現在のブランチに上流ブランチがあるということではありません。B
つまり、 " " ブランチをプッシュしているときは が設定されていません。つまり、 にプルするとき、git はどのブランチをプルするかわかりません。remote/B
branch.B.merge
current
B
"
upstream
" をプッシュすると、現在のブランチに上流ブランチがあることを意味します。B
つまり、remote/B
branch.B.merge
はupstream
設定します。" " ブランチをプッシュするとき。
つまり、 にプルするときB
、git はどのブランチをプルするかを認識します (また、どのリモート リポジトリであるかも認識します:branch.B.remote
)