我已经阅读了关于push命令的git man,但我仍然不明白在push.default中设置当前和上游之间的确切区别
我希望我们的团队能够进行推送,并且只会对他们当前正在处理的分支进行更改.据我所知,当我做git branch时,这个分支是用*(星号)标记的分支.
谢谢你的帮助.
Von*_*onC 49
问题是你在推动什么,以及在哪里:
current
:
upstream
:
如此处所述,Git2.0将另外引入一个新的默认值push.default
:simple
simple
就像upstream
,但上游必须具有相同的名称或推送将失败.
仅推送一个分支(使用" 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.
Run Code Online (Sandbox Code Playgroud)
两个(current
和upstream
)之间的区别在于拉(从远程到分支的什么?):
推" current
"并不意味着你的当前分支B
具有remote/B
有其上游分支.
即:branch.B.merge
当您正在推动" current
"分支时,未设置.
即:当拉到时B
,git不会知道要拉什么分支.
推" upstream
"意味着你的当前分支B
已经remote/B
有它的上游分支.
即:branch.B.merge
被设定,当你正在推动的" upstream
"分支.
即:牵引时B
,混帐知道什么分支拉(以及哪些远程回购:branch.B.remote
)
push.default
最好在 git config ( man git-config
)的手册页中介绍。
要了解 for 的“上游”和“当前”之间的区别push.default
,您应该知道术语上游:
上游是从普通本地分支到本地远程跟踪分支的本地指针。(是的,这些都是本地的。)示例:
请注意,origin/*分支是本地的,并且在每次从原点获取时(重新)设置。这些被称为“本地远程跟踪分支”。它们代表最后一次获取时远程“原点”上分支的状态。
每个(普通)本地分支都可以配置一个上游,但这不是必须的:上游关系的配置只是为了方便一些 git 命令!
git status
例如,如果您执行 a ,git 会告诉您“x commits behind/ahead”,如果它知道上游(因此 git 可以与之进行比较)。
一个普通的初始git checkout blabla
通常为你设置上游配置(如果 origin/blabla 存在,它被检出并设置为上游 - 否则检出失败)。
git push
也可以使用分支的上游配置,即将您的新提交复制到代表上游的远程分支。(这是push.default = upstream
。)
push.default = current
让我们以相同的名称git push
将新提交复制到远程。它完全忽略了上游配置。– 如果您的本地分支名称始终与远程分支名称相同,则两种配置具有相同的效果,但如果上游尚未配置,则with将失败。git push
push.default = upstream
PD:是的,*
在输出中git branch
显示当前分支。
归档时间: |
|
查看次数: |
26347 次 |
最近记录: |