Получение информации о сдавленных коммитах в Git - PullRequest
18 голосов
/ 29 августа 2010

Я подавляю некоторые коммиты в Git, используя git rebase -i origin/master, как указано в ReinH.com .

После сжатия некоторых коммитов есть ли способ увидеть оригинальные коммиты?Можно ли получить "diff" из коммитов?Могу ли я получить SHA?

Если это возможно, возможно ли это после запуска git gc?

1 Ответ

25 голосов
/ 29 августа 2010

Смысл уничтожения коммитов состоит в том, чтобы переписать историю, заменив исходные коммиты одним коммитом.

Тем не менее, трудно заставить вещи фактически исчезнуть в git.Самый простой способ получить эти коммиты - через git reflog.Попробуйте git reflog <branch> для предыдущих позиций ветви, которую вы перебазировали.

Вы должны быть в состоянии найти SHA1 кончика ветви непосредственно перед вашей интерактивной перебазой.(Если ветвь больше не существует, попробуйте git reflog show, чтобы увидеть рефлог из HEAD. Она также должна быть там, просто больше других действий для сортировки.)

Как только вы получите SHA1, вы 're golden - используйте git log -p или gitk для просмотра коммитов и просмотра их различий.(Если вы хотите много с этим сделать, создайте там ветку, чтобы вам не приходилось вставлять SHA1 снова и снова.)

Это все еще возможно после запуска git gc, так какДо тех пор, пока вы не раздавили эти коммиты.gc только чернослив недостижимый висячие объекты в течение определенного возраста.

Коммиты считаются достижимыми, если они достижимы из чего-либо в повторных флагах, а для повторных флагов истекает 90 дней., так что вы можете рассчитывать на эти оригинальные коммиты, которые торчат в течение трех месяцев.

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