2014-01-06 54 views
6

在git中,以下幾點有什麼區別?HEAD,HEAD ^和HEAD〜1和有什麼不同?

  • HEAD
  • HEAD^
  • HEAD~1
  • HEAD~2

以及它們如何涉及到master?那麼有MASTER^,MASTER~1 ??

+1

請參閱語法參考,例如http://jk.gs/gitrevisions.html –

+3

你可以在這裏找到信息http://stackoverflow.com/questions/2221658/whats-the-difference-between -head和頭型,混帳 – Robert

回答

8

HEAD是您當前分支上最近提交的同義詞,無論它是什麼。

HEAD^(或HEAD^1)表示HEAD的第一個父項。合併提交具有多個父代,因此HEAD^2指代HEAD的第二個立即父級,該父級涉及創建HEAD的合併。

HEAD~1HEAD~相同。在這種情況下,它與HEAD^同義。要看出差異,請考慮HEAD~2HEAD的祖父母。使用~可以追溯到幾代人。

如果您碰巧在master分支上,那麼HEAD指的是master。如果您在分支topic/foo上,那麼它在您處於該分支時指向該分支。

使用git的情況很重要。 MASTER^MASTER~1可能產生出錯的形式

fatal: ambiguous argument 'MASTER~1': unknown revision or path not 
in the working tree.

master^master~1有意義。

請參閱git rev-parse documentation以瞭解可以提交提交的多種方式的完整詳細信息。

相關問題