2013-08-19 3 views
0

Если я сделал git commit -amend несколько раз при одной и той же фиксации, есть ли способ, чтобы я мог перечислить все различные поправки к данной фиксации?Показать изменения в фиксации

+2

Взгляните на 'git reflog'. Но этот журнал не является постоянным и регулярно очищается. – knittl

ответ

1

git commit --amend полностью переписывает фиксацию, создавая новый объект фиксации и, в конечном счете, отбрасывая старый. Если есть ссылки на старый объект, он хранится, поэтому вы можете искать изменения; но в целом это, вероятно, не так.

Таким образом, короткий ответ: Нет. Поправки совершают переписывание первоначальной фиксации явно не имеют раздельную историю. Если вы хотите идентифицировать разные состояния, вы должны просто совершить реальные коммиты.

Если вы просто хотите, чтобы это было во время вашей (личной/частной) разработки, вы также можете совершать обычные коммиты, а затем позже выкапывать коммиты для создания одного, если вы хотите его очистить.

+0

, когда вы делаете сквош, где делаются коммиты, которые состоят из раздавленного коммита? –

+0

Сквош в основном делает то же самое, что и постоянное изменение одного фиксации. Он создает новый объект фиксации, в котором все изменения от других отдельных коммитов объединяются. Впоследствии, если никакие дополнительные ссылки (ветви, теги) не указывают на эти коммиты, они могут быть автоматически удалены. – poke

0

На самом деле существует путь. Вы можете использовать команду git reflog

$ git reflog 
d7f7f15 [email protected]{0}: commit (amend): My second commit 
f5d2ed5 [email protected]{1}: commit (amend): My second commit 
7333d86 [email protected]{2}: commit: My second commit 
addbfef [email protected]{3}: commit: This was my first commit 

Когда я использую Пугин EGit в IDE Eclipse, я могу увидеть полный список фиксаций и поправок, а также различия между ними. Я не знаю, как увидеть различия по командной строке, если кто-то знает, как это сделать, пожалуйста, опубликуйте его.