2012-05-14 34 views
3

根據this article,我試圖讓自己養成在更新我的工作副本時明確獲取和合並的習慣。「git merge origin/branch」中遺忘斜槓的後果

$ git fetch origin 
$ git merge origin asdf 

請注意,我用了一個空間,而不是在合併命令斜槓:但是,發出命令時,今天我犯了一個錯字。因爲它似乎無論如何要取得預期的效果,我沒有注意到,直到我已經推,它增加了一個奇怪的措辭提交到日誌:

commit 65f0037bed926c338cb95e7437e7f7f407028d9f 
Author: Me <[email protected]> 
Date: Mon May 14 09:36:44 2012 -0700 

    Merge branch 'asdf', remote-tracking branch 'origin' into asdf 

現在我想知道如果這實際上有任何不利的副作用。它看起來像將參數視爲兩個單獨的分支規範合併到當前分支中,並且「origin」會隱式擴展爲「origin/asdf」,這正是我的實際意圖。那時候,我不知道爲什麼它甚至允許「合併分支」asdf'asdf「發生。

這只是一個令人尷尬的無操作?或者我在我的資料庫歷史記錄中引入了一個潛在的問題構造?

編輯:的git cat-file commit 65f0037b

tree 74ed9ead4b82e4e56bd5656ee10375f8f0fcb60d 
parent 3bc2a37031a4a391aa4da64c22e3f55148cd23e2 
author Me <[email protected]> 1337013404 -0700 
committer Me <[email protected]> 1337013404 -0700 

    Merge branch 'asdf', remote-tracking branch 'origin' into asdf 
+0

與此類似? http://stackoverflow.com/questions/2602546/how-do-i-git-fetch-and-git-merge-from-a-remote-tracking-branch-like-git-pu – bluesman

+0

你可以做'git貓文件提交65f0037b'?你可能已經執行了章魚合併,或者其中一個提交可能只是快速轉發,你可能已經得到了你想要的具有誤導性提交信息。從提交描述很難打電話。 –

+0

@Charles Bailey:不幸的是,在我問這個問題後大約45分鐘,我決定在謹慎的方面犯錯,並且硬重置+重做可疑的合併。我意識到,這可能會使這個問題不切實際地回答明確,我爲此表示歉意。然而,答案是與我知道默認分支實際上是「origin/asdf」的事實相結合,這讓我相信合併確實巧合地(並且笨拙地)完成了我原本的目標。 – Neverender

回答

4

輸出讓我們開始爲merge命令手冊頁:

git merge [-n] [--stat] [--no-commit] [--squash] 
      [-s <strategy>] [-X <strategy-option>] 
      [--[no-]rerere-autoupdate] [-m <msg>] [<commit>...] 

所以,在沒有所有的選項,merge接受提交列表。如果你已經在分支asdf,你鍵入:

git merge asdf 

...這是一個無操作:合併一個分支本身就意味着沒有什麼可以做。如果你輸入:

git merge origin 

然後git將尋找與遠程命名origin相關的默認分支。在branch -a輸出:

* master 
    remotes/origin/HEAD -> origin/master 
    remotes/origin/master 

remotes/origin/HEAD指向默認分支,所以:

git merge origin 

等同於:

git merge origin/master 

所以假設你的遙控器上的默認分支master,鍵入時:

git merge origin asdf 

你得到了:

git merge origin/master 

如果默認分支爲asdf,你有:

git merge origin/asdf 
+0

沒有解釋遠程追蹤分支 – bluesman

+0

是的,我可以肯定地說在本例中遙控器/起源/ HEAD確實指向了起源/ asdf。我認爲這意味着我的原始評估(無意中得到期望的結果+難以操作)是準確的。 – Neverender