2013-08-07 5 views
2

Что означают эти [email protected]{0} и [email protected]{1}? Разве не HEAD должен быть тегом, указывающим на единую фиксацию? Почему он отображается на обоих?Что означает HEAD @ {n} в выводе для git reflog?

git reflog 
97df263 [email protected]{0}: commit: I just made my first change to this file. Yay! 
4333289 [email protected]{1}: clone: from https://github.com/tswicegood/mysite 
+2

Изучите руководство '' gitrevisions (7) 'manual (https://www.kernel.org/pub/software/scm/git/docs/gitrevisions.html), в котором объясняются все эти' '' и '^' забавные символы. – kostix

+0

Возможный дубликат [В чем разница между ~ и^в git] (http://stackoverflow.com/questions/14733687/whats-the-difference-between-and-in-git) – kostix

+0

@kostix Почему? Этот вопрос не имеет никакого отношения ни к одному из этих персонажей. ОП задает вопрос о '@ {n}'. – Ajedi32

ответ

1

@{n} часть в данном случае «как далеко идти назад в истории». [email protected]{0} - это последнее значение HEAD и [email protected]{1} - это значение HEAD, имевшее до этого последнее значение. Дополнительную информацию см. В разделе «УКАЗАНИЕ РЕВИЗИОНОВ» в руководстве git-rev-parse.

2

В примере оригинального плаката:

$ git reflog 
97df263 [email protected]{0}: commit: I just made my first change to this file. Yay! 
4333289 [email protected]{1}: clone: from https://github.com/tswicegood/mysite 

[email protected]{n} просто означает п-е прежнее положение из HEAD:

  • [email protected]{0}означает, что 0-й прежнее положение из HEAD.
    • Другими словами, текущее положение HEAD, поэтому [email protected]{0} фактически такой же, как HEAD.
  • [email protected]{1}означает 1-ую позицию перед из HEAD.
  • [email protected]{2}означает 2-е предварительное положение of HEAD и т. Д.

В более общем плане, синтаксис <reference>@{n} это сокращение означает «п-е предварительное положение опорной ветви» /, как я изложить в my answer to What does the “at” @ sign/symbol/character mean in Git?. Таким образом, вы можете использовать этот синтаксис с любым заданием/ветвью, например:

  • [email protected]{1} является первым до положения master отрасли.
  • origin/[email protected]{1} является 1-й предшествующей позицией ветви дистанционного отслеживания origin/master.

Как объяснено в official Linux Kernel Git documentation for specifying Git revisions:

<refname>@{<n>}, например, [email protected]{1}

Ссылка, за которой следует суффикс «@» с порядковой спецификацией, заключенной в пару скобок (например, «{1}», «{15}»), указывает n-ое предшествующее значение этого ref. Например, «master @ {1}» - это непосредственное предшествующее значение мастера, в то время как «master @ {5}» является пятым предшествующим значением мастера.Этот суффикс может использоваться только сразу после имени ref, и ref должен иметь существующий журнал («$ GIT_DIR/logs /»).

Смежные вопросы