Git:使用来自不同远程的两个具有相同名称的分支

标签 git branch git-branch git-remote

我使用的存储库既存在于 github 上,也存在于内部 gitlab 上。 我设置了两个 Remote :origin (github) 和 gitlab

我如何轻松地与两个 Remote 的分支 master 交互?

我尝试过的:

  1. git checkout --track gitlab/master -> 错误:A branch named 'master' already exists.
  2. git checkout -b master-gitlab --track gitlab/master -> 成功了,我现在有一个本地分支 master-gitlab 并且控制台输出告诉我: master-gitlab setup to track remote branch master from gitlab. -> 完美,这就是我想要的!
  3. git push gitlab master-gitlab -> 这会在远程 gitlab 上创建一个新的远程分支 master-gitlab > 这不是我想要的,并且与上一条命令的输出不一致。
  4. 我现在可以执行 git push gitlab master-gitlab:mastermaster-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/

相关文章:

git - 从远程 git 存储库中恢复未引用的提交

git 删除远程分支不工作 : branch not found

GIT:如何保护分支不被其他开发人员删除?

Git,错误 : remote unpack failed: unable to create temporary object directory - By creating new Branch

svn - Git 与 SVN : can I have single change in history for several branches?

git:如何以交互方式逐个分支删除远程仓库中不存在的本地分支?

mysql - 清理 mysqldump 以跟踪 git 中的架构

git - 如何让 git-push 永久跳过详分割支的提交?

Git - 在错误的目录中初始化 bare

git - MacOS:使用 Bitbucket 和 Github、SSH key ?