Что означают эти символы и что они означают?
(я не могу найти никаких объяснений в официальной документации)
Что означают эти символы и что они означают?
(я не могу найти никаких объяснений в официальной документации)
 HEAD (прямая или косвенная, т.е. символическая) ссылка на текущую фиксацию. Это фиксация, которую вы проверили в рабочем каталоге (если вы не внесли некоторые изменения или эквивалент), и это коммит, поверх которого "git commit" будет создавать новый. Обычно HEAD является символической ссылкой на другую именованную ветку; эта ветка в данный момент проверяется ветвью или текущей ветвью. HEAD также может указывать непосредственно на фиксацию; это состояние называется "отсоединенным HEAD" и может пониматься как находящееся в неназванной анонимной ветке.
И  @ является ярлыком для HEAD, так как Git 1.8.5
 ORIG_HEAD - это предыдущее состояние HEAD, заданное командами, которые могут иметь опасное поведение, их легко вернуть. Теперь менее полезно, что Git имеет reflog: [email protected]{1} примерно эквивалентен ORIG_HEAD ([email protected]{1} всегда является последним значением HEAD, ORIG_HEAD является последним значением HEAD перед опасной операцией).
Для получения дополнительной информации прочитайте git (1) manpage, Git Руководство пользователя, Git Community Book и Git Глоссарий
Из git reset
"pull" или "merge" всегда оставляет исходный кончик текущей ветки в
ORIG_HEAD.
git reset --hard ORIG_HEAD
Слишком сложное восстановление приводит к тому, что ваш индексный файл и рабочее дерево возвращаются в это состояние и сбрасывает кончик ветки на этот коммит.
git reset --merge ORIG_HEAD
После проверки результата слияния вы можете обнаружить, что изменение в другой ветке неудовлетворительно. Запуск "
git reset --hard ORIG_HEAD" позволит вам вернуться к тому месту, где вы были, но он отменит ваши локальные изменения, которые вам не нужны. "git reset --merge" сохраняет ваши локальные изменения.
Прежде чем применять какие-либо исправления, ORIG_HEAD устанавливается на вершину текущей ветки.
Это полезно, если у вас возникли проблемы с несколькими коммитами, например, с запуском 'git am' на неправильной ветке или с ошибкой в фиксации, которая легче фиксируется путем изменения почтового ящика (например, + ошибки в строках "От:" ).Кроме того, merge всегда устанавливает '
.git/ORIG_HEAD' в исходное состояние HEAD, поэтому проблемное слияние можно удалить, используя 'git reset ORIG_HEAD'.
Примечание: из здесь
HEAD - это движущийся указатель. Иногда это означает текущую ветвь, иногда это не так.
Итак, HEAD НЕ является синонимом для "текущей ветки".
HEAD означает "текущий" всюду в git, но это не обязательно означает "текущая ветвь" (т.е. отсоединенная HEAD).
Но это почти всегда означает "текущий фиксатор".
Это коммит "git commit" строится сверху, а "git diff --cached" и "git status" сравниваются. Это означает, что текущая ветвь существует только в очень ограниченных контекстах (именно тогда, когда нам нужна ветка имя для работы --- сброс и увеличение кончика ответвления с помощью фиксации /rebase/etc.).Reflog - это средство возврата назад во времени и времени машины имеют интересное взаимодействие с понятием "ток".
[email protected]{5.minutes.ago}может означать "разыменовать HEAD symref, чтобы узнать, в какой ветке мы находимся прямо сейчас, а затем выяснить, где кончик этой ветки был 5 минут назад".
В качестве альтернативы это может означать "что такое фиксация, которую я бы назвал HEAD 5 минут назад, например. если я сделал" git show HEAD "тогда".
 git1.8.4 (июль 2013 г.)  вводит  новую новую нотацию! < ш > (на самом деле, это будет для 1.8.5 или 1.9, Q4 2013: повторно введено с commit 9ba89f4)
Вместо ввода четырех заглавных букв "
HEAD" вы можете сказать "@" сейчас,
например "git log @".
См. commit cdfd948
Ввод '
HEAD' является утомительным, особенно если мы можем использовать '@'.Причиной выбора "
@" является то, что оно естественно следует из синтаксиса[email protected](например,[email protected]{u}), за исключением того, что мы не имеем ссылки на ref и не выполняем операцию, и когда у нас их нет, позволяет предположить, что "HEAD".Итак, теперь мы можем использовать '
git show @~1' и все это доброе добро.До сих пор "
@" было допустимым именем, но оно противоречит этой идее, поэтому пусть оно недействительно. Вероятно, очень немногие люди, если таковые имеются, использовали это имя.
A сообщение в блоге в течение периода 1.8.4-rc3 (14-е, август 2013 года) объявило, что эта функция была отменена и отложена (спасибо Cupcake для хедз-ап). 
Опять же, он вводится снова с commit 9ba89f4 (сентябрь 2013 г.).
См. commit 2c2b664:
@ ярлык для HEAD" Это возвращает commit cdfd948, так как это относится не только к "
@" (и формируется с такими модификаторами, как@{u}применяется к нему), но также затрагивает, например, "refs/heads/@/foo", который он не должен.Основная идея дать короткую руку может быть хорошей, и тема может быть повторена позже, но пусть вернется, чтобы не затрагивать существующие варианты использования на данный момент для предстоящего выпуска.
Я понимаю, что HEAD указывает текущую ветку, тогда как ORIG_HEAD используется для хранения предыдущего HEAD перед выполнением "опасных" операций.
Например, git -rebase и git -am запишите исходный кончик ветки, прежде чем применять какие-либо изменения.