2016-12-18 168 views
-1

我有我的本地開發分支機構(本地/ dev),原始存儲庫(origin/master)的主分支和我的遠程開發分支(remote/dev)。啓動時,本地/ dev和遠程/ dev同步。git rebase三個存儲庫

現在我想從origin/master獲取更改,使用我的本地/ dev重新綁定它並將其推送到遠程/ dev。

所以我在我的本地/ dev庫中執行了git pull --rebase origin master,這似乎工作正常。

git status返回我:

On branch dev 
Your branch and 'remote/dev' have diverged, 
and have 8 and 5 different commits each, respectively. 
    (use "git pull" to merge the remote branch into yours) 
nothing to commit, working tree clean 

git push remote dev將導致

To github.com:PascalTurbo/dev.git 
! [rejected]  logger -> logger (non-fast-forward) 
error: failed to push some refs to '[email protected]:PascalTurbo/dev.git' 
hint: Updates were rejected because the tip of your current branch is behind 
hint: its remote counterpart. Integrate the remote changes (e.g. 
hint: 'git pull ...') before pushing again. 
hint: See the 'Note about fast-forwards' in 'git push --help' for details. 

我怎樣才能解決這個問題?

回答

1

實際上,當您執行git pull --rebase origin master時,它並不正常。讓我們舉例說明通過下面的圖表(有兩個庫的本地和淵源,這也用於三個不同版本庫):

A---B---C local/dev, origin/dev 
/  
D---E---F---G origin/master 

git pull --rebase origin master

A---B---C origin/dev 
/  
D---E---F---G---A’---B’---C’ local/dev 
      | 
     origin/master 

所以真的分道揚鑣本地的/ dev和遠程的/ dev,這並不是你想要的。 有一種方法可以讓你實現你的要求:

  1. 恢復本地回購爲遠程。

git fetch remote git reset --hard remote/dev git pull origin

  • 將原點/主本地的/ dev分支的頂部的變化。
  • git checkout master git rebase dev git checkout dev git merge master

  • 移除未使用的變化。 git branch –D master
  • 將本地/ dev分支上的更改推送到遠程/ dev。
  • git checkout dev git push remote dev

    相關問題