klu*_*ues 5 git branch git-remote git-branch
我使用的存储库既存在于 github 上,又存在于内部 gitlab 上。我设置了两个遥控器:origin(github) 和gitlab.
我如何轻松地与master两个遥控器的分支进行交互?
我尝试过的:
git checkout --track gitlab/master-> 错误:A branch named 'master' already exists.git checkout -b master-gitlab --track gitlab/master-> 工作了,我现在有一个本地分支master-gitlab,控制台输出告诉我:master-gitlab set up to track remote branch master from gitlab.-> 完美,这就是我想要的!git push gitlab master-gitlab-> 这会在远程创建一个新的远程分支 ,这不是我想要的,并且与上一个命令的输出不一致。master-gitlabgitlabgit push gitlab master-gitlab:master推送master-gitlab操作。但我总是忘记如何做到这一点,而且不是很直观。mastergitlab有没有更简单的方法来跟踪master不同遥控器的分支并推送到它?
这是一个 git-bug 吗?它首先 (3) 告诉我跟踪master并随后在推送时创建一个新分支?
从 git 正在做文档所说的事情的意义上来说,这不是一个错误。在这种情况下,它也可能不是最直观的结果,但是有多少种不同的方法可以将远程分支与本地引用相关联,我真的不认为有一种行为在每种情况下对每个人来说都是直观的。
一般来说,推送配置与拉取配置是分开设置的。(您可以查看git push文档,了解当您未在命令行上指定所有内容时,它如何尝试找出将哪些内容推送到何处。https: //git-scm.com/docs/git-push)
也就是说,如果您要推送到默认远程,默认推送配置会尝试使用拉取配置。您可以配置为始终默认为上游配置push
git config push.default upstream
Run Code Online (Sandbox Code Playgroud)
然后你可以master-gitlab使用推送
git push
Run Code Online (Sandbox Code Playgroud)
如果已签出,并且
git push gitlab master-gitlab
Run Code Online (Sandbox Code Playgroud)
任何状况之下。当然,由于这会更改默认设置,因此可能会影响您与 gitlab 的其他交互,因此我鼓励您查看文档并确保您了解行为差异,以决定是否值得。