2014-01-06 13 views
6

In git, was ist der Unterschied zwischen den folgenden?Was ist der Unterschied zu HEAD, HEAD^und HEAD ~ 1?

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

Und wie stehen sie master? Also gibt es eine MASTER^, MASTER~1?

+1

Bitte beachten Sie die Syntax-Referenz unter, zum Beispiel, http://jk.gs/gitrevisions.html –

+3

können Sie Informationen finden Sie hier http://StackOverflow.com/Questions/2221658/whats-the-difference-between Kopf-und-Kopf-in-git – Robert

Antwort

8

HEAD ist ein Synonym für das letzte Commit auf Ihrer aktuellen Zweigstelle, was auch immer es ist.

(oder HEAD^1) bedeutet das erste übergeordnete Element von HEAD. Ein Merge-Commit hat mehrere Eltern, also bezieht sich HEAD^2 auf den zweiten unmittelbaren übergeordnet von HEAD, der an der Zusammenführung beteiligt war, die HEAD erstellte.

HEAD~1 ist das gleiche wie HEAD~. In diesem Fall ist es auch mit . Beachten Sie, dass HEAD~2 der Großelternteil von HEAD ist, um den Unterschied zu sehen. Mit ~ geht zurück Generationen.

Wenn Sie auf der master Zweig geschehen ist, dann bezieht sich HEAD zu meistern. Wenn Sie sich in der Zweigstelle topic/foo befinden, bezieht sich das auf diesen Zweig, während Sie darauf sind.

Fall ist wichtig mit Git. MASTER^ oder MASTER~1 ist wahrscheinlich Fehler der Form

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

Aber master^ und master~1sind sinnvoll zu produzieren.

Ausführliche Informationen zu den vielen Möglichkeiten, wie Sie die Commits bearbeiten können, finden Sie unter git rev-parse documentation.