2009-11-27 171 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