2009-11-27 172 views
1

所以我有3个的Git分支:将多个git分支合并为主?

  • 刷新
  • auth_upgrade

我还没有真正已经用树枝像我应该......所以master的方式过时,refresh已过时,auth_upgrade实际上是完全当前的分支。

所以...我最终想让auth_upgrade主分支,然后git push它到我的github回购。

这样做的最佳过程是什么?

回答

2

你可以拉成auth_upgrademaster

$ git co master 
$ git pull . auth_upgrade 
  • 然后做master主线工作,并使用该分支远程同步..
  • 应用相同的过程,以refresh,如果有要包括一些独特的变化..

见:

$ man git-pull 

    git-pull - Fetch from and merge with another repository or a local branch 
+0

现在我遇到的问题是auth_upgrade和master之间存在各种文件差异冲突。我如何才能让auth_upgrade只是覆盖master中的任何代码差异? – Shpigford 2009-11-27 20:07:40

+0

请查看/ http://www.kernel.org/pub/software/scm/git/docs/git-merge.html/ /合并策略:我们的/ 这解决了任何数量的头,但是生成的合并树总是当前分支头的树,实际上忽略了所有其他分支的所有更改。它是用来取代侧枝的旧发展历史。 – miku 2009-11-27 20:32:36

0

可以重命名与git branch -m选项分支:

git branch -m master old_master 
git branch -m auth_upgrade master 
+0

但是,如果我重新命名'auth_upgrade'到'master'的,然后尝试推到github上,我得到'非快进'错误。另外,'master'和'auth_ugrade'之间的所有新文件和更改都不会被推送,所以当我从分支部署时,这些文件完全不受控制。 – Shpigford 2009-11-27 19:09:27

+0

啊,你没有提到'master'不是'auth_upgrade'的祖先。这确实有所作为。我会留下我的回答,以防其他人有类似的情况,可以通过重命名。 – 2009-11-27 19:12:42

0

如果当你说 '过时' T他老分支是严格的祖先,那么你真的没有任何合并问题。

如果你只是想使你的当前分支到主分支上的远程存储库,你可以这样做:

git push origin HEAD:master 

编辑:从您的意见之一,它听起来就像你没有所有从当前分支远程主,虽然变化,所以你可能需要成功地前推,将它们合并在:

git fetch 
git merge origin/master 

您就可以删除你的本地分支。删除一个小的-d是安全的,它只会删除当前分支的祖先分支。

git branch -d master 
git branch -d refresh. 

如果你烦恼,你的本地分支不叫师傅,你现在可以做的事:

git checkout -b master 
git branch -d auth_upgrade