3 ответов:
git reflog- твой друг. Найдите фиксацию, которую вы хотите включить в этот список, и вы можете сбросить ее (например:git reset --hard e870e41).(Если вы не зафиксировали свои изменения... вы можете быть в беде-совершайте рано, и совершайте часто!)
сначала все, что есть
HEAD?
HEAD- это просто ссылка на текущую фиксацию (последнюю) в текущей ветке.
Там может быть только 1HEADв любой момент времени.если вы не на последней фиксации-это означает, что
HEADявляется точкой предшествующего фиксации в истории ее называемой отсоединенной головой.несколько опции:
git checkoutgit checkout <commit_id>
git reflogвы всегда можете использовать
reflogа такжеgit reflog git checkout HEAD@{...}это вернет вас к желаемой фиксации
git reset HEAD --hard <commit_id>"переместите" голову назад к нужной фиксации.
# This will destroy any local modifications. # Don't do it if you have uncommitted work you want to keep. git reset --hard 0d1d7fc32 # Alternatively, if there's work to keep: git stash git reset --hard 0d1d7fc32 git stash pop # This saves the modifications, then reapplies that patch after resetting. # You could get merge conflicts, if you've modified things which were # changed since the commit you reset to.
- Примечание: ( С Git 2.7)
вы также можете использоватьgit rebase --no-autostashкак что ж.
git checkoutgit checkout -b <new branch> <commit_id> git checkout HEAD~X // x is the number of commits t go backэто будет проверка новой ветви, указывающей на желаемую фиксацию
вот общая схема того, что можно сделать.
другой способ добраться до удаленной фиксации-с помощью .
git fsck --lost-foundэто выведет что-то вроде в последнюю строку:
dangling commit xyzмы можем проверить, что это та же фиксация с помощью
reflogкак указано в другие ответы. Теперь мы можем сделатьgit mergegit merge xyzПримечание:
Мы не можем вернуть фиксацию с помощьюfsckесли мы уже запустилиgit gcкоманда, которая удалит ссылку на висячие совершать.



Comments