В Git, как вы видите и управляете коммитами, которых нет в ветке? - PullRequest
2 голосов
/ 01 сентября 2009

Коммит не обязательно находится в ветке, так как вы видите и управляете этими коммитами? Кроме того, возможно ли посмотреть на эти коммиты из gitk?

Большое спасибо!

PS: просто, чтобы прояснить ситуацию, вот пример:

git init
git commit
touch toto
git add toto
git commit -a
echo $RANDOM > toto
git commit -a
git checkout f798e54 #checkout initial commit
echo $RANDOM > toto
git commit -a #"untracked commit"
gitk --all
git branch
git log
git checkout master #back on the main branch
gitk --all #untracked commit is lost?
git log
git branch

Как мне вернуть мой "неотслеживаемый" коммит?

Ответы [ 3 ]

7 голосов
/ 01 сентября 2009

Эта ситуация называется отдельная ГОЛОВА . Обычно инструменты (такие как gitk) не показывают ваши коммиты, которые не достижимы символическим именем ветви.

Чтобы вернуть ваш коммит, вы можете использовать git reflog, чтобы отобразить журнал всех недавних действий, включая ваш отключенный HEAD. Когда вы найдете его, вы можете использовать его идентификатор с git checkout, чтобы вернуться к нему. Если вы обнаружите, что это ценно, вы можете указать название этой ветви.

3 голосов
/ 01 сентября 2009

Может быть, вы говорите о git fsck --unreachable?

2 голосов
/ 01 сентября 2009

git reflog покажет вам символическое имя, например HEAD@{0}, которое вы можете использовать для доступа к этой недоступной фиксации. Затем вы можете использовать gitk --all HEAD@{0}, чтобы увидеть, где он существует в вашем хранилище.

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