【问题标题】:git merge remotes branchesgit 合并远程分支
【发布时间】:2013-11-21 08:30:03
【问题描述】:

我的 git repo 有两个遥控器。

origin/master
origin/develop
beta/master
beta/develop

我的origin/develop 是 beta/master 之上的 2 个提交。我想在 beta/master 上合并这两个提交并推送到 beta。但是当我这样做 >git merge beta/master origin/develop 时,它使所有内容都是最新的。虽然我看到git log beta/master,它没有那些提交。

如何合并这些分支?

【问题讨论】:

  • 你在本地签出远程分支了吗?
  • 是的原始版本。然后将 beta 添加为远程
  • 尝试在本地检查 beta 和 origin 然后合并它们,然后你可以将它们推送到远程仓库

标签: git git-remote


【解决方案1】:

@Robin Green 的回答几乎是正确的,但是你需要指定远程分支名称,另外你不需要创建一个临时分支:

git checkout beta/master
git merge master
git push beta HEAD:refs/heads/master

【讨论】:

  • git checkout beta/master 不会尝试覆盖 master 分支并失败?
  • @RobinGreen 不,它检查出一个分离的 HEAD。
【解决方案2】:

正如@Vii 所说:

git checkout -b betamaster --track beta/master
git merge master
git push betamaster:master

【讨论】:

  • 这会将分支作为 betamaster 推送,他希望它作为 master,所以:git push betamaster:master
  • 根据man git-push默认会推送到被跟踪的分支,所以我的应该可以工作。
  • 不正确。 push.default 是默认匹配的,所以 betamaster 需要已经在 'origin' 上,在 Git 2.0 中它将是'simple',所以默认情况下它不会被推送,另外它取决于 default.matching 的值。
  • 啊,是的,我对它会推送到跟踪的存储库这一事实感到困惑。我必须说,这与 push.default 结合起来不是很合乎逻辑的行为。