Моя последняя фиксация удалена. Мои команды:
git branch
* (detached from a96f277)
help
master
omid
reza
rezalocal
git commit
is commited
git push
cant push
git checkout master
git merge master a96f277
: a96f277 is not found!
git checkout a96f277
git log
: my last commit not found;
Это показывает мою последнюю фиксацию, и все мои правки и добавленный файл удаляются!





Вы не можете нажать, потому что, когда вы делали коммит, вы не были ни на одной ветке. Сделанный вами коммит принимает a96f277 в качестве своего родителя, но нигде не упоминается и будет кандидатом на сборку мусора.
И действительно, git намекает на это, когда вы фиксируете делать в состоянии detached HEAD, он выводит что-то вроде этой формы:
Warning: you are leaving 1 commit behind, not connected to any of your branches:
abcdef123 HEAD test
If you want to keep it by creating a new branch, this may be a good time to do so with:
git branch abcdef123
Вы должны были заранее проверить ветку, в которой нужно совершить коммит, но еще не поздно, так как теперь вы можете просто создать ветку в этом коммите и объединить ее с master :
git checkout -b temp <commitHash>
git checkout master
git merge temp
(где <commitHash> можно найти в вашем недавнем выводе, когда вы совершили коммит после a96f277) (если не в выводе, получите его в своем reflog)
После этого вы сможете нажать master как обычно.
я запускаю ваши команды, и создается временная ветка, но при запуске git log в временной ветке не отображается моя последняя фиксация, и ее можно удалить.
Вы зафиксировали [скажем, хэш xyz123] поверх a96f277, а затем переключились на master. Если вы сейчас вернетесь к a96f277 с помощью git checkout a96f277, вашего последнего коммита xyz123 там не будет, поскольку вы указываете на его предыдущий коммит.
Теперь коммит xyz123 висит, так как на него не указывает ветка. Чтобы получить идентификатор коммита для этого, вы можете сделать git reflog. Это даст вам историю всех операций, которые вы сделали [пока цикл сборки мусора git не запущен].
Затем вы можете найти фактический идентификатор коммита для xyz123, а затем выйти из него, создать новую ветку и отправить ее на удаленный сервер.
Надеюсь это поможет!
a96f277 — это начальная точка отсоединенного HEAD, и ваш коммит опережает его.
Чтобы узнать хэш вашего коммита, вы можете либо найти вывод git commit, который вы запустили, либо использовать git reflog.
После того, как вы его найдете, предположим, что это abc123,
git checkout master
git cherry-pick abc123
# or
git merge abc123
я использовал reflog и нашел свою фиксацию после этого, я объединил ее с мастером
Возможный дубликат Что происходит с коммитами git, созданными в состоянии detached HEAD?