Tidy или drop git история для выпуска?

Я собираюсь публично выпустить проект, надеюсь, найти вкладчиков. Мой проект является локальным клоном другого активного и хорошо обеспеченного ресурсами проекта (шаблон проекта Django). Я не внес никаких глубоких изменений в код, хотя теперь это другой проект.

Моя текущая история git - беспорядок и не очень помогает. Я как-то вычищу его перед публичным выпуском и, конечно же, проясню, что такое оригинальный раздвоенный проект. Поскольку я не думаю, что что-то особенное или мистифицирующее о модификациях, которые я внес в проект (в основном, настройки), я стараюсь выкачать все коммиты в соответствии с этим Post overflow post. Я задаюсь вопросом, является ли это плохой практикой, поскольку это может сделать ее еще более сложной, если я отброшу индексированную историю поиска. Я намерен уменьшить такие проблемы с хорошими комментариями, считая README и т.д.

Альтернативой, которую я вижу и чего хочу избежать, является кропотливая инкрементная миссия rebase squash.

Ответ 1

Я понимаю, что у вас

  • разветвлено из проекта на GitHub,
  • клонировал вашу вилку,
  • сделал несколько коммитов в этом локальном репо.

Если вы уже нажали на свою вилку

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

Итак, прежде чем продолжить, вы должны хотя бы убедиться, что ваш проект никогда не был разветвлен или клонирован. К счастью, GitHub отслеживает эту информацию. В правой панели навигации нажмите "Графики".

enter image description here

Вкладка "Сеть" покажет вам, сколько людей разветкило ваш проект.

enter image description here

Если вы единственный, кого там указали, хорошо. Затем перейдите на вкладку "Трафик", чтобы узнать, сколько раз был клонирован ваш проект.

enter image description here

Если ваш проект никогда не был клонирован, все еще есть время, чтобы заставить вашу испорченную историю использовать вашу вилку.

Одно предостережение: конечно, всегда есть риск, что кто-то винит/клонирует вашу старую, неопрятную историю только в самый последний момент, прежде чем вы нажмете толчок. Будьте осторожны.

Если вы еще не нажали на свою вилку

В этом случае переписывание вашей истории полностью безопасно и считается хорошей практикой.

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

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

Вот соответствующий отрывок в книге Pro Git:

[...] попытайтесь сделать каждый фиксатор логически разделенным набором изменений. Если вы можете, попробуйте внести изменения в удобоваримый - не код на целый уик-энд по пяти различным вопросам, а затем представить их в качестве одного крупного коммита в понедельник. Даже если вы не совершаете в выходные дни, воспользуйтесь промежуточной областью в понедельник, чтобы разделить вашу работу как минимум на одну фиксацию на каждую проблему с полезным сообщением за фиксацию. Если некоторые изменения изменяют один и тот же файл, попробуйте использовать Git add --patch для частичного воспроизведения файлов (подробно описанных в главе 6). Снимок проекта на кончике ветки идентичен независимо от того, выполняете ли вы один или пять, до тех пор, пока все изменения будут добавлены в какой-то момент, поэтому постарайтесь облегчить работу своих коллег-разработчиков, когда им придется пересмотреть свои изменения. Этот подход также упрощает вытягивание или возврат одного из наборов изменений, если вам нужно позже.