Вопрос или проблема
Я пытался закоммитить код в свой проект, тестируя цикл, теперь я не хочу, чтобы мой коллега видел, что я много раз коммитил код за последние 2 часа, не добавляя ценности к моему коду:
Последние 18 коммитов (кроме последнего, то есть 17 коммитов перед последним) были бесполезными. Поэтому я хочу удалить их и оставить последний. То есть я хочу прежде всего удалить историю git коммитов тех, о которых упоминалось.
Как это сделать? Я видел, что интерактивный rebase может помочь в этом случае, но какая точная команда для использования?
Два предложения:
- Вашим коллегам не должно быть важно, что вы тестируете свой код. Это нормальная часть разработки программного обеспечения. Просто будьте честны по этому поводу, и они поймут 🙂
- Если вы хотите очистить историю в своей локальной ветке, используйте перезапись истории git. После того, как вы перепишите свою локальную ветку, вы можете “принудительно отправить” вашу ветку в ваш удаленный репозиторий, чтобы обновить его и удалить ваши коммиты оттуда тоже.
Ответ или решение
Чтобы удалить историю последних 18 коммитов в Git, за исключением последнего, вы можете воспользоваться интерактивным ребейзом. Это позволит вам перезаписать историю коммитов и удалить ненужные изменения, сохранив только последние актуальные изменения.
Шаги по удалению коммитов:
-
Откройте терминал и перейдите в директорию вашего проекта, где вы работаете с Git.
-
Запустите интерактивный ребейз. Чтобы начать процесс, введите следующую команду:
git rebase -i HEAD~18
Здесь
HEAD~18
указывает на то, что вы хотите редактировать последние 18 коммитов. -
Редактирование списка коммитов. После выполнения команды откроется редактор, где вы увидите список из 18 последних коммитов:
pick <hash1> Commit message 1 pick <hash2> Commit message 2 ... pick <hash17> Commit message 17 pick <hash18> Commit message 18
-
Удалите ненужные коммиты. Чтобы удалить коммиты, которые вы хотите исключить, измените слово
pick
наdrop
или просто удалите строки с ненужными коммитами, оставив только последний коммит, который вы хотите сохранить. Пример:drop <hash1> Commit message 1 drop <hash2> Commit message 2 ... drop <hash16> Commit message 16 pick <hash17> Commit message 17
-
Сохраните и закройте редактор. После внесения изменений сохраните файл и закройте редактор. Git начнет процесс ребейза, удаляя выбранные вами коммиты.
-
Принудительное обновление удаленного репозитория. После успешного завершения ребейза вам, возможно, нужно будет выполнить принудительную отправку изменения в удаленный репозиторий. Используйте команду:
git push origin <ваша-ветка> --force
Замените
<ваша-ветка>
на имя текущей ветки. Будьте осторожны с принудительным пушем, так как он может переписать историю в удаленном репозитории и повлиять на других участников команды.
Важно понимать, что удаление коммитов из истории — это значительное действие, которое может затронуть других участников проекта. Рекомендуется обсудить ваше намерение с командой или, по крайней мере, убедиться, что ваш локальный репозиторий не будет конфликтовать с локальными копиями других членов команды.
В заключение, несмотря на то, что тестирование кода и частые коммиты — это нормальная часть разработки, использование таких функций, как интерактивный ребейз, может помочь в поддержании чистоты и аккуратности вашей истории коммитов.