2017-05-24 71 views
2

我想將我的分支合併到master。我已將我的分支上的所有內容都轉換爲主人。我需要做git pull,以確保我最新的,但是當我嘗試git merge mybranch我得到的錯誤「git pull」後我會提交所有修改過的文件嗎?

error: merge is not possible because you have unmerged files.

git status顯示許許多多被修改,大概是從我最近的拉文件。我應該做一個git add .`git commit -m「的東西??,或者處理這個問題的最好方法是什麼?對於已經由各自作者自己提交的一系列更改進行提交似乎很奇怪?

回答

1

請勿使用git pull。它只會讓你困惑。好吧,我覺得已經有了!

git pull所做的就是運行git fetch(從其他Git獲得新的提交),然後是第二個Git命令。通常的第二個Git命令是git merge。它看起來像你運行這兩個命令。在這種情況下,您運行了git fetch origin,然後是git merge origin/master

現在可能發生的情況是第二個命令失敗。但既然你不知道git pull意思是git fetch && git merge,你所看到的只是這個奇怪的錯誤,它是在抱怨你已經已經合併。現在你想合併別的東西,但是你不能,因爲你還在失敗合併中間。

如果您運行了git fetch origin,您會看到它的工作。然後你會運行git merge origin/whatever,看到它失敗,知道你必須完成本次合併,還是中止,或重訂,或者不管它是什麼,你喜歡在這一點上做,然後才能git merge另一個分支。

git pull命令意味着是一個方便,短切做兩個Git命令,因爲一個git fetch幾乎總是將要遵循與任一git mergegit rebase。所以當Git第一次被建造時,他們只提供的用戶前端git pull,後者使用隱藏後端git fetch。但事實證明,將兩個步驟分開是非常有用的,這樣你就可以(例如)看到你有什麼fetch ed。他們使得git fetch僅僅用於人類(就像其他任何Git命令一樣:-)),以及git pull只是爲了方便。它是什麼,除非不是,就像現在一樣。

1

是的,這是一種方法:首先pull(git會嘗試自動合併拉出的文件然後)或fetch - 那麼你將不得不手動執行merge。完成後提交合並,然後推送所有更改。

還有另外一種方法,git rebase。我更喜歡它,但這取決於你和你的團隊如何使用git,所以它可能會或可能不是你的情況下的正確工具。

+0

是否存在此後提交提交的規範提交消息? – 1252748

+0

也只是爲了澄清,合併後,我的下一個步驟(如果不是rebasing):'git add。''git commit -m'post pull commit'''git merge my-branch'? – 1252748

+0

規範的消息將包含合併關鍵字(這就是默認的默認提交消息「Merge(...)」所表示的步驟:1.修正合併衝突,2.合併git,3。 git commit -m,4. git push。你不需要'git add',因爲這些文件已經被添加到版本庫。 – syntagma

相關問題