Я увидел здесь ответ на вопрос, который помогает восстановить удаленный файл в git.
Решение было
git checkout <deleting_commit>^ -- <deleted_file_path>
Что делает символ каретки ( ^
)? Я видел, как он в другом месте делает очень полезные вещи в git. Это волшебно. Кто-нибудь, пожалуйста, испортите мне его и скажите, что он делает?
^
) - это escape-символ в cmd.exe. Каждый раз, когда я пытался использовать его, чтобы увидеть, будет ли он полезным, я фактически ничего не передавал, что объясняет, почему результаты никогда не менялись. > _> Глупый cmd.exe. Вы можете избежать этого, удвоив его или процитировав:git log master^^
илиgit log "master^"
Ответы:
HEAD^
означает первого родителя вершины текущей ветви.Помните, что у коммитов git может быть более одного родителя.
HEAD^
является сокращениемHEAD^1
, и вы также можете адресоватьHEAD^2
и так далее по мере необходимости.Вы можете добраться до родителей любого коммита, а не только
HEAD
. Вы также можете перемещаться между поколениями: например,master~2
означает прародителя верхушки главной ветви, отдавая предпочтение первому родителю в случаях двусмысленности. Эти спецификаторы могут быть соединены произвольно, например ,topic~3^2
. См. Соответствующий ответ на вопрос В чем разница междуHEAD^
иHEAD~
в Git?Для получения полной информации см. Раздел «Определение редакций» в
git rev-parse --help
.источник
HEAD^^^
возвращается третий более старый коммит, т.е. он эквивалентенHEAD~~~
?Это означает «родитель». Так
HEAD^
означает «родитель текущего HEAD». Вы даже можете объединить их в цепочку:HEAD^^
означает «родительский родитель текущего HEAD» (т. Е. Прародитель текущего HEAD),HEAD^^^
означает «родительский родительский элемент родительского элемента текущего HEAD» и т. Д.источник
^
(Каретка) также может быть использована при указании диапазонов .источник
Вот наглядное объяснение. Предположим, у вас есть такая история:
Когда объект был объединен в мастер, он
C
был создан с двумя предками. Git присваивает этим предкам номера. Предку основной линииB
присваивается 1, а предку функцииF
- 2.Таким образом
C^1
относитсяB
иC^2
относится кF
.C^
это псевдоним дляC^1
.Вы бы только когда-либо использовали
<rev>^3
. если вы выполнили слияние трех веток.источник
Каретка относится к родителю конкретной фиксации. Например,
HEAD^
относится к родительскому объекту текущего коммита HEAD. (такжеHEAD^^
относится к дедушке и бабушке).источник
Карат представляет собой смещение фиксации (родителя). Так, например,
HEAD^
означает «одна фиксация из HEAD» иHEAD^^^
означает «три фиксации из HEAD».источник
(^) Получает родительский источник команды, то есть HEAD ^ получает родительский источник HEAD.
источник
Грег Бэкон дал отличную ссылку, но она довольно плотная. Во вводной документации Git в Интернете также представлены спецификаторы ревизии и диапазона:
https://git-scm.com/book/en/v2/Git-Tools-Revision-Selection
источник