Надеюсь, что это правильный форум для этого вопроса ... скажите мне, если нет.

Я являюсь основным пользователем git, но я разрабатывал это приложение в течение последних нескольких месяцев, используя принцип "часто совершайте". Теперь я просто запустил git rev-list --all --count и обнаружил, что у меня 425 коммитов.

Это может быть сумасшествием ... или это может быть совершенно нормально. Я понятия не имею.

Дело в том, что хранилище становится немного громоздким, и то, что я хотел бы сделать в идеальном мире, - это просто пройти через коммиты, исключив 2 из каждых 3: я хотел бы, чтобы сообщения о коммитах были быть удаленным, чтобы каким-то образом быть добавленным к сообщениям тех, которые должны остаться ...

Существует "ручной" способ сделать это: я пробираюсь по всему репо, проверяю каждый 3-й коммит, тщательно отмечаю текст из коммитов, которые я не сохраняю, и систематически добавляю их в "каждый третий" сообщение.

В то же время, очевидно, я создаю новый репо, в котором используются только те "каждые 3 коммиты". Я еще не пробовал это, отчасти потому, что это кажется мне занудой, которая займет очень много времени: есть ли что-нибудь в git или какой-нибудь инструмент, изобретенный кем-либо, который может помочь в решении этой задачи?

1 ответ1

1

Зачем

История 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 есть глава о переписывании истории.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .