2012-12-17 88 views
2

只是一個免責聲明:在使用git幾個月後,我仍然完全不知道我在使用它時做了什麼。唯一的事情就是當我完全按照我在網頁上找到的指示進行操作時。git merge upstream/master「already up-to-date」

我想要做的就是更新我的資料庫,這是從另一個項目分叉。我發現這些指令,我一直想更新

但是每次跟了上去,這個時候,我嘗試合併我得到這個:

warning: refname 'upstream/master' is ambiguous. 
Already up-to-date 

並沒有任何反應,即使項目我從中分出最近的承諾。我真的不知道哪裏出了問題,我真的很沮喪。對不起,如果這個問題是令人難以置信的不討人喜歡和/或愚蠢的。

編輯1:此外,我已經搜索了許多解決方案,但沒有成功。

編輯2:混帳分支的輸出-a

* master 
upstream/master 
remotes/origin/HEAD -> origin/master 
remotes/origin/log-upgrade 
remotes/origin/master 
remotes/origin/past-gens 
remotes/origin/prototype-party 
remotes/upstream/log-upgrade 
remotes/upstream/master 
remotes/upstream/past-gens 
remotes/upstream/prototype-party 

編輯3:類似問題

git refname 'origin/master' is ambiguous
Git: refname 'master' is ambiguous
warning: refname 'HEAD' is ambiguous
Git warning: refname 'xxx' is ambiguous

+0

你可以添加'git branch -a'的輸出嗎?如果你不確定你在用'git'做什麼,我會推薦閱讀[Pro Git book](http://git-scm.com/book),我發現它在學習理論背後'git'。有很好的圖表和一切。 – simont

回答

7

你有兩個分支upstream/master。一個是本地分支,一個是遠程分支。當您嘗試執行git merge時,git不知道您希望合併的這兩個分支中的哪一個,因此含糊不清。

這可以從git branch -a可以看出(顯示所有git分支機構,包括遙控器):

upstream/master 
<SNIP> 
remotes/upstream/master 

爲了解決這個問題,你既可以重新命名(或刪除)當地分支:

git branch -m <old name> <new name> 

在你的情況下,你會重命名爲像這樣(更改名稱爲newname):

git branch -m upstream/master newname 

這應該讓你做一個git fetch/git merge正常。

+0

我將upstream/master重命名爲上游/ mastertwo,但現在當我嘗試從上游/ mastertwo合併時,它仍然表示最新。 –

+0

您重命名_local_分支,這是_probably_不必要的,並且只是由於您在使用git時出錯而創建的。你想從_remote_分支合併,這個分支應該仍然被命名爲upstream/master。 –

2

要麼只是運行:的

git merge remotes/upstream/master 

代替

git merge upstream/master 

或刪除您的本地upstream/master分支,通過運行:

git branch -d upstream/master 

,並學習如何git的作品)。這並不複雜,一旦你理解了核心原則,一切都很簡單。