Теперь, когда я делаю коммиты для своего проекта, он показывает SHA-1 в командной строке как рабочую ветвь (вместо мастера)
Это, вероятно, означает, что у вас «отсоединенная ГОЛОВА». Отделенный HEAD указывает непосредственно на коммит, а не на ветку (которая затем указывает на коммит). Отделенная голова похожа на неназванную ветвь.
Это состояние было вызвано вашей git checkout HEAD^
командой, так как HEAD^
относится к коммиту, а не к имени ветви. Вы, вероятно, хотели сделать git reset --hard HEAD^
- , в то время как master все еще оставался активной веткой - чтобы удалить самый последний коммит из master (он все еще существует на диске и быть доступным через reflog, пока не истечет срок его записи в reflog.
Как я могу указать HEAD на последний коммит, с которого я работаю?
HEAD
- это всегда коммит, от которого вы работаете, независимо от того, отсоединен он или нет.
Если вы имеете в виду «Как я могу указать master на последний коммит, с которого я работаю?», То это то же самое, что и вопрос «Как я могу получить master для указать на HEAD
? ». Ответ
git branch -f master HEAD
(на самом деле, вы можете отключить HEAD
, так как это по умолчанию). Это принудительно сбрасывает master на коммит, который в данный момент находится на HEAD
. Любые коммиты на master , которые недоступны через другую ветку или текущий HEAD
, отныне будут доступны только через reflog и, в конечном счете, будут собирать мусор (это отбрасывает от master что-нибудь в master , чего нет в HEAD
). Вы также, вероятно, захотите после этого присоединить HEAD
к этому обновленному мастеру.
git checkout master
Вместо двух приведенных выше команд вы можете сначала присоединить HEAD
, а затем сбросить master с помощью этих двух последовательных команд:
git checkout master # reattach, commit at HEAD is now the unwanted commit
git reset --hard HEAD@{1} # reset master to the commit at HEAD before the prior command
Запись HEAD@{1}
используется для доступа к записям в журнале. Этот пример просто означает «предыдущий HEAD
» (то есть «фиксация в HEAD
перед самой последней операцией, которая затронула HEAD
»).