2014-09-04 97 views
3

請注意命令中缺少「/」。git merge origin branchname做什麼?

我是一個git新手。

我正在兩個獨立的機器(一臺開發機器,一臺測試機器)上使用同一代碼庫,同一分支。我在開發機器上推送代碼。

git push origin branchname 

在測試機,我所做的:

git fetch origin 
git merge origin branchname 

的Git報 「已經起牀了最新Yeeah!」但我知道我沒有。

最後我做了正確的

git merge origin/branchname 

當我搞砸了,做了什麼事:

git merge origin branchname 

http://git-scm.com/docs/git-merge提到的「章魚合併」,而是「出身」是特殊的(不是一個分支名)所以我不認爲這發生了。

+0

是的。重複。我投票結束了我的問題。我應該刪除它嗎? – 2014-09-04 19:58:00

+1

現在您無法刪除您的問題,並且已發佈回答。無論如何,重複並不全是壞事;他們幫助人們(可能不是所有人都使用相同的搜索查詢)匯聚到他們的問題的解決方案。 – Jubobs 2014-09-04 19:59:10

回答

3

這意味着「合併分支originbranchname到當前分支」 - 有效地請求兩個其他分支合併到您當前的分支。請注意,origin是一個遠程;當用作提交標識符時,它相當於origin/HEAD(通常指向origin/master)。

因此,假設您已經檢出branchname,您試圖將分支與自己合併,並且這是無操作。這聽起來像origin/HEAD已經「合併」(承諾是branchname的祖先),所以也被解析爲無操作。

換句話說,你試圖合併到你的分支的兩個提交已經是你的分支歷史的一部分,所以Git沒有做任何事情。

+0

在這種情況下使用術語「[three-way merge]」(http://en.wikipedia.org/wiki/Merge_(revision_control)#Three-way_merge)「可能會混淆。你應該寫「兩個分支合併成另一個」或類似的東西。 – Jubobs 2014-09-04 19:24:53

+1

@Jubobs公平點,有時候我忘記了三路合併通常是指文件如何合併。在這種情況下,這不是一個不準確的術語,但基於這個術語通常如何使用可能會引起誤解,而且我明白這一點。 – cdhowie 2014-09-04 19:26:49

+0

現在我很高興':)' – Jubobs 2014-09-04 19:27:34

-2

當你在一個遠程原點上有branchname時,那麼在你的本地你呼叫origin/brachname,那就是你在遠程創建一個分支的本地副本。起源/ brachname是一個分支。

所以你所做的是從遠程(原點)獲取分支(branchname)。現在你有一個本地副本(origin/branchname),然後你將它合併到你的本地分支(branchname)中。

+0

這似乎是重申OP已經知道的信息,但沒有解決OP不能理解的特定形式的Git命令('git merge origin branchname')。因此,它根本沒有回答這個問題。 – cdhowie 2014-09-04 19:29:21

相關問題