git-推送电流与推送上游(跟踪)

git-推送电流与推送上游(跟踪),git,Git,我已经阅读了git man关于push命令的文章,但是我仍然不理解在push.default中设置的当前和上游之间的确切区别 我希望我们的团队只做push,并且只有他们目前正在处理的分支上的更改才会被推进。 据我所知,当我执行git branch时,这个分支就是标有*(星号)的分支 谢谢你的帮助。问题是你在推什么,推到哪里: 当前: “什么是您当前的分支机构(没有其他分支机构) “到其中”是中同名的分支(如果不存在则创建) 上游: “what”也只是当前分支 “,其中”是指您推动的本地分

我已经阅读了git man关于push命令的文章,但是我仍然不理解在push.default中设置的当前和上游之间的确切区别

我希望我们的团队只做push,并且只有他们目前正在处理的分支上的更改才会被推进。 据我所知,当我执行git branch
时,这个分支就是标有*(星号)的分支

谢谢你的帮助。

问题是你在推什么,推到哪里:

  • 当前

    • 什么是您当前的分支机构(没有其他分支机构)
    • 到其中”是中同名的分支(如果不存在则创建)
  • 上游

    • what”也只是当前分支
    • ,其中”是指您推动的本地分行的上游回购协议上的任何分行(不一定同名)
同样,Git2.0还将为
push.default
simple

简单
与上游类似,但上游也必须具有相同的名称,否则推送将失败


仅推送一个分支(模式为“
简单”
”、“
当前”
”或“
上游”
”)可以避免推送所有匹配的分支(模式为“
匹配”
”,这是很长一段时间以来的默认设置),即使您的一些分支可能尚未准备好被推送

(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
    ”并不意味着当前分支
    B
    remote/B
    有其上游分支。
    Ie:
    branch.B.当您按下“
    current
    ”分支时,未设置merge

    Ie:当拉到
    B
    时,git不知道拉哪个分支

  • 按“
    上游
    ”表示当前分支
    B
    远程/B
    有其上游分支。
    Ie:
    branch.B.当您在推送“
    上游
    ”分支时,设置了“合并”

    Ie:当拉入
    B
    时,git知道拉入哪个分支(以及哪个远程回购:
    branch.B.remote


push.default
最好在git-config的手册页(
man-git-config
)中介绍

要理解推送默认值的“上游”和“当前”之间的区别,您应该知道术语上游:

上游是从普通本地分支到本地远程跟踪分支的本地指针。(是的,这些都是本地的。)示例:

  • 分支blabla的源/blabla配置为上游(非常常见)
  • 分支blabla的origin/foo为上游(分支具有不同的本地名称;不太常见)
  • 分支blabla的上游为origin2/foo
注意,origin/*分支是本地的,并且在每次从origin获取时(重新)设置。这些被称为“本地远程跟踪分支”。它们表示上次获取时远程“源”上分支的状态

每个(普通)本地分支都可以配置一个上游,但这不是必须的:上游关系的配置只是为了方便一些git命令

例如,如果您执行一个
git状态
,git会告诉您“x在后面/前面提交”,如果它知道上游(以便git可以与它进行比较)

正常的初始
git签出blabla
通常为您设置上游配置(如果origin/blabla存在,则将其签出并设置为上游,否则签出失败)

git push
还可以使用分支的上游配置,即将新提交复制到表示上游的远程分支。(这是
push.default=upstream

push.default=current
允许一个
git push
以相同的名称将新提交复制到远程。它完全忽略了上游配置如果您的本地分支名称始终与远程分支名称相同,则这两种配置的效果相同,除非
git push
with
push.default=upstream
将失败(如果尚未配置upstream)


PD:是的,
git branch
输出中的
*
显示当前分支。

push。默认值对
pull
没有影响正确的说法是,上游分支的配置对拉动的内容有影响。但是这两件事(upstream和push.default)是两件不同的事。@ebelle手册页称为git config,但在我使用的系统上,它也可以用
man git config
打开。你们有什么系统?我使用的是brew安装的macOS high Sierra git 2.20.1。“mangitconfig”适合我,但“mangitconfig”只为我提供了git的手册页。我们的里程数各不相同。