Git:使用来自不同远程的两个同名分支
我使用的存储库既存在于github上,也存在于内部gitlab上。 我设置了两个遥控器:Git:使用来自不同远程的两个同名分支,git,branch,git-branch,git-remote,Git,Branch,Git Branch,Git Remote,我使用的存储库既存在于github上,也存在于内部gitlab上。 我设置了两个遥控器:origin(github)和gitlab 如何轻松地与两个遥控器的分支主机进行交互? 我所尝试的: git签出--跟踪gitlab/master->错误:名为“master”的分支已存在。 git checkout-b master gitlab--track gitlab/master->成功了,我现在有了一个本地分支master gitlab,控制台输出告诉我:master gitlab设置为从gitl
origin
(github)和gitlab
如何轻松地与两个遥控器的分支主机进行交互?
我所尝试的:
git签出--跟踪gitlab/master
->错误:名为“master”的分支已存在。
git checkout-b master gitlab--track gitlab/master
->成功了,我现在有了一个本地分支master gitlab
,控制台输出告诉我:master gitlab设置为从gitlab跟踪远程分支master。
->完美,这就是我想要的李>
git push gitlab master gitlab
->这会在远程gitlab
上创建一个新的远程分支master gitlab
,该分支不是我想要的,并且与上一个命令的输出不一致git推送gitlab master gitlab:master
,它将master gitlab
推送到远程gitlab
的master
。但我总是忘记怎么做,这不是很直观主机
分支并将其推入?
这是一个git bug,它首先(3)告诉我跟踪
master
,然后在push上创建一个新分支吗?这不是一个bug,因为git正在做文档中说它将要做的事情。在这种情况下,这也可能不是最直观的结果,但是有多少种不同的方式将远程分支与本地ref关联起来,我真的不认为在任何情况下都有一种行为对每个人都是直观的
通常,推送配置与拉送配置分开设置。(您可以查看gitpush
文档,了解当您没有在命令行上指定所有内容时,gitpush是如何尝试确定将什么内容推送到何处的。)
也就是说,如果您正在推送到默认远程设备,默认推送配置会尝试使用拉送配置。您可以将push
配置为始终默认为上游配置
git config push.default upstream
然后,只需使用
git push
如果已经结帐,以及
git push gitlab master-gitlab
无论如何。当然,由于这会更改默认设置,它可能会影响您与gitlab的其他交互,因此我鼓励您查看文档,确保您了解行为的差异,以决定是否值得这样做。在您的第三点,我猜您的意思是它创建了一个名为master gitlab的新远程分支?是的,谢谢,我改了。好的,谢谢。我不喜欢更改默认属性,因为这意味着我的命令和工作流可能无法在其他机器上工作。那么在哪种情况下,默认配置更有意义呢?在我看来,如果git之前告诉我我的本地分支正在跟踪远程分支的
master
,push会创建一个新的远程分支,这是不一致和令人困惑的。@klues-好吧,为了正确地理解这个对话,软件会做它所做的;我们两人都没有编写git,也都不会重写它,所以我们是否确信默认值是合理的并不重要。但就我的理解而言,默认设置对初学者来说是“安全的”(不一定是“最有用的”),并且期望更好地理解其用例的人会在适当的情况下更改设置。