Как восстановить случайные коммиты в ветке удаленного отслеживания? - PullRequest
1 голос
/ 20 февраля 2012

По данным GitGuys

Ветви удаленного отслеживания не должны изменяться пользователями (не устанавливайте свою ветку git на ветку удаленного отслеживания с помощью git checkout, а затем пытайтесь изменить ветку удаленного отслеживания).

К сожалению, это именно то, что я сделал случайно и совершил дневную работу. И теперь после переключения на другую ветку эти коммиты исчезли и не могут быть найдены в журнале какой-либо существующей ветви, локальной или удаленной.

К счастью, я все еще вижу их в .git / logs / HEAD, и использование git show с хешами дает мне различия в коде, поэтому они не потеряны полностью. Мои вопросы:

  • Как я могу получить эти изменения в обычную ветку?
  • Если не следует фиксировать ветку удаленного отслеживания, почему это не приводит к ошибке?

1 Ответ

1 голос
/ 20 февраля 2012

Коммиты, вероятно, все еще там. Вам просто нужно найти ссылку, которая указывает на них.

Используйте git reflog, чтобы найти последний потерянный коммит. Как только вы найдете этот коммит, используйте git checkout -b <branch name> <lost commit hash>, чтобы создать и оформить ветку, которая указывает на этот совет.

Что касается ошибки, вы должны были получить сообщение о том, что вы работаете в безголовом состоянии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...