Зачем
История Git работает лучше всего, когда она на самом деле рассказывает историю процесса разработки. Когда вам в конечном итоге нужно копаться в истории (например, для поиска, когда была введена ошибка, когда она была исправлена и т. Д.), Это не помогает увидеть коммиты под названием «Добавить сегодняшние изменения» ; они говорят вам, как код был изменен, но не почему.
Переписывание истории совершить это обычно делается (слить фиксации, поменять их вокруг, и так далее) - но если вы просто произвольно удалить 2 из каждых 3 фиксаций, он, вероятно, останется столь же бесполезным, как и раньше. Вместо этого переписайте историю, чтобы убрать такие вещи, как «упс, исправьте опечатку» или добавьте больше деталей для фиксации сообщений.
Конечно, вышесказанное является вопросом мнения, но, как правило, более удобно, чтобы компьютер запоминал вещи так, чтобы вам не приходилось это делать.
425 коммитов это нормально для нескольких месяцев проекта. Это также относительно мало по сравнению со многими реальными репозиториями Git (которые измеряют коммиты тысячами). Если вас беспокоит использование дискового пространства, а Git еще не запустил периодическую программу git gc
, попробуйте запустить ее вручную и посмотрите, поможет ли это.
Резервное копирование по сети git push
будет гораздо более эффективным, чем загрузка целых репозиториев вручную, поскольку он точно знает, что нужно загружать, а что уже есть.
Возвращаясь к делу
В Git есть много инструментов для переписывания истории - наиболее распространенным является то git rebase --interactive
, что может делать именно тот тип правок, который вы хотите.
; on a feature branch, to rewrite everything that's not yet in master git rebase -i master ; on master, to go through the *entire history* git rebase -i --root
Запуск его в интерактивном режиме открывает «список задач» в текстовом редакторе, с одной строкой на фиксацию и «действием» перед ним.
Перемещение строк будет изменять порядок коммитов. (Однако изменение текста не приведет к обновлению сообщений коммита - это всего лишь предварительный просмотр. Используйте
reword
для редактирования реального сообщения.)Изменение действия с на
pick
наsquash
объединит фиксацию с вышеупомянутым - в результате получается один коммит, который также содержит оба сообщения.fixup
Действие аналогично, но только держит 1 - ое сообщение.
Это основа, потому что множество уроков уже написано гораздо более подробно. Например, в Git Book есть глава о переписывании истории .