2014-10-07 102 views

回答

18

git status告訴你關於你的工作目錄樹的狀態和你指數(其中上演改變生活)對當前分支相對於最新提交。您看到的輸出意味着磁盤上的文件與您分支上的最新提交完全匹配。也就是說,沒有什麼可以提交的。

來自GitHub的消息不是約承諾,但約合併。 GitHub想爲您提供一個單擊方法來將此分支合併到您的master分支中,但它不能,因爲合併會導致衝突。由於GitHub無法幫助您通過網站解決衝突,因此它會要求您在自己的計算機上解決它們。

處理這種情況的最佳方法是將當前主分支合併到您的主題分支本地然後將結果推送到GitHub。要做到這一點,做到以下幾點:(我假設GitHub的遠程調用origin它通常是,你可能知道,如果它不是。)

$ git checkout pr12 # If you're not already on pr12 
$ git fetch origin 
$ git merge origin/master 

首先,我們做當然,我們是在正確的分支。然後我們確保我們擁有來自GitHub倉庫master分支的最新代碼。然後我們將該代碼合併到我們的pr12分支中。

切記:git fetch origin更新我們的本地origin/master與GitHub的master相同,但它不會觸及簡稱爲master的本地分支。我們必須檢查我們的master分支以對其進行更改。相反,我們只是更新我們關於GitHub(origin/master)上的內容的想法,並將其合併到我們的pr12中。

當您運行merge命令時,您將看到衝突。那些代表git(和GitHub)無法自動做出的決定。編輯這些文件,以便它們以您希望它們最終結束的方式進行。然後:

$ git add each/file.txt that/had/conflicts.conf 
$ git commit # Your editor will open with a pre-filled 
       # commit message. Just save and close the file. 
$ git push origin pr12 

也就是說,我們補充一點,我們的固定文件的版本,然後完成合並提交我們開始git merge。最後,我們推動新的合併提交分支到GitHub。

既然我們已經解決了衝突,這個分支應該是微不足道的,以合併另一種方式,到master。 GitHub會注意到,並給你一個綠色的「合併」按鈕。

+0

在我做了git merge origin/master幾乎每個文件都說「both added」和「new file」。 – Nathan 2014-10-07 17:32:27

+0

這很奇怪。 Git告訴你,自從'origin/master'和'pr12'分歧的時候,兩個分支都添加了這些文件。你可以通過'git log --graph --oneline origin/master pr12'找到它們在視覺上的分歧。該命令的輸出是否與您期望這兩個分支的歷史看起來一樣? – Peeja 2014-10-07 17:44:58

+0

所以我有點明白了。但現在所有從原始回購合併分叉回購出現在分支。當我嘗試恢復那個提交時,它說了一些關於-m開關的內容。 – Nathan 2014-10-07 18:56:25

5

當我遇到此消息時,這是因爲我的分叉是一個特定的回購背後的原始。在我的具體情況下,我分叉的回購是pydata/pandas

我不得不configure a remote for my fork做:

> git remote add upstream [email protected]:original_user/original_repo.git 
> git remote -v 
origin [email protected]:some_user/pandas.git (fetch) 
origin [email protected]:some_user/pandas.git (push) 
upstream [email protected]:pydata/pandas.git (fetch) 
upstream [email protected]thub.com:pydata/pandas.git (push) 

(注意:git remote add upstream是說「添加遠程所謂的‘上游’的名稱可以是任何的Git的方式)

然後我fetched the latest commits從原來的回購與:

> git fetch upstream 
> git checkout master # Just in case you're not already on master 
> git merge upstream/master 

最後推合併r epo回github:

> git push