push コマンドについて git man を読みましたが、 push.defaultに設定する現在とアップストリームの正確な違いをまだ理解していません。
私たちのチームがプッシュを行い、現在取り組んでいるブランチの変更のみがプッシュされることを望んでいます。私が理解しているように、このブランチは、git branchを実行したときに * (スター) でマークされたブランチです。
助けてくれてありがとう。
push コマンドについて git man を読みましたが、 push.defaultに設定する現在とアップストリームの正確な違いをまだ理解していません。
私たちのチームがプッシュを行い、現在取り組んでいるブランチの変更のみがプッシュされることを望んでいます。私が理解しているように、このブランチは、git branchを実行したときに * (スター) でマークされたブランチです。
助けてくれてありがとう。
問題は、何をプッシュしているのか、そしてどこにプッシュしているのかです:
current
:
upstream
:
here で説明されているように、Git2.0 では、次の新しいデフォルトが追加で導入されますpush.default
。simple
simple
に似upstream
ていますが、アップストリームも同じ名前である必要があります。そうしないと、プッシュが失敗します。
ブランチを 1 つだけプッシュすると (モード " simple
"、" current
"、または " ")、一致するすべてのブランチがプッシュされるシナリオ(モード " "、これが長い間デフォルトでしたupstream
) が回避されます。プッシュする準備ができています。matching
(master)> git push
...
To git@github.com:jkubicek/my_proj.git
21b430d..dd378ca master -> master
! [rejected] release -> release (non-fast-forward)
error: failed to push some refs to 'git@github.com: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
あるという意味ではありません。
つまり、「 」ブランチをプッシュしている場合、設定されていません。
つまり、 にプルするとき、git はどのブランチをプルするかわかりません。B
remote/B
branch.B.merge
current
B
" " を押すと、現在のブランチに上流のブランチがupstream
あることを意味します。
つまり、「 」ブランチをプッシュしているときに設定されます。
つまり: にプルするとき、git はどのブランチをプルするか (およびどのリモート リポジトリ: )を認識します。B
remote/B
branch.B.merge
upstream
B
branch.B.remote