我使用的存储库既存在于 github 上,也存在于内部 gitlab 上。
我设置了两个 Remote :origin
(github) 和 gitlab
。
我如何轻松地与两个 Remote 的分支 master
交互?
我尝试过的:
git checkout --track gitlab/master
-> 错误:A branch named 'master' already exists.
git checkout -b master-gitlab --track gitlab/master
-> 成功了,我现在有一个本地分支master-gitlab
并且控制台输出告诉我:master-gitlab setup to track remote branch master from gitlab.
-> 完美,这就是我想要的!git push gitlab master-gitlab
-> 这会在远程gitlab
上创建一个新的远程分支master-gitlab
> 这不是我想要的,并且与上一条命令的输出不一致。- 我现在可以执行
git push gitlab master-gitlab:master
将master-gitlab
推送到远程gitlab 的
。但我总是忘记如何做到这一点,而且它不是很直观。master
有没有更简单的方法来跟踪不同远程的 master
分支并推送到它?
这是一个 git-bug,它首先 (3) 告诉我跟踪 master
然后在推送时创建一个新分支吗?
最佳答案
从某种意义上说,git 正在按照文档所说的那样做,这不是错误。在这种情况下,它也可能不是最直观的结果,但是有多少种不同的方法可以将远程分支与本地引用相关联,我真的不认为在任何情况下都有一种行为对每个人都是直观的。
一般情况下,推送配置与 pull 配置是分开设置的。 (您可以查看 git push
文档,了解当您没有在命令行上指定所有内容时,它如何尝试确定将什么推送到哪里。https://git-scm.com/docs/git-push)
也就是说,默认推送配置会尝试使用 pull 配置如果您正在推送到默认远程。您可以将 push
配置为始终默认使用 upstream 配置
git config push.default upstream
然后你可以使用 just 推送 master-gitlab
git push
如果它被 checkout ,并且
git push gitlab master-gitlab
无论如何。当然,由于这会更改默认设置,因此可能会影响您与 gitlab 的其他交互,因此我鼓励您查看文档并确保您了解行为上的差异以决定是否值得。
关于Git:使用来自不同远程的两个具有相同名称的分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58080762/