Самый простой (безопасный) способ - создать временную ветку, указывающую на ваш HEAD, оформить заказ, объединить временную ветвь и затем удалить ее:
git branch temp
git checkout master
git merge temp
git branch -d temp
Вы также можете избежать использования временной ветки и просто использовать reflog для получения коммитов из любой ветви:
git checkout master
git merge HEAD@{1}
HEAD@{1}
здесь относится к предыдущему коммиту, который вы извлекли; HEAD@{0}
совпадает с HEAD
, текущим коммитом, с которым вы работаете. Если вы хотите увидеть все предыдущие коммиты, на которые указывал HEAD
(срок действия которых еще не истек), вы можете сделать:
git reflog
Вы сказали, что это произошло потому, что вы пытались отменить коммиты. Как указывает Млеттерле, вы можете сделать это с помощью git reset
. git reset --hard <i>rev</i>
установит ветвь, в которой вы находитесь, HEAD, ваш индекс и вашу рабочую копию для конкретной ревизии. Обратите внимание, что это сместит незафиксированные изменения, поэтому делайте это, только если вы действительно знаете, что делаете. Обычно безопаснее будет сделать git reset <i>rev</i>
, который не влияет на вашу рабочую копию, а затем выборочно вернуть отдельные файлы в вашей рабочей копии с помощью git checkout
, чтобы гарантировать, что вы случайно не уничтожите какую-либо работу, которую выполняли .
Кроме того, git reset
, как правило, следует использовать только для нефиксированных коммитов. Если вы пытаетесь отменить что-то, что уже было добавлено, а другие люди уже слились, вы обычно хотите git revert
.