Как удалить историю коммитов за последние 18? [дубликат]

Вопрос или проблема

Я пытался закоммитить код в свой проект, тестируя цикл, теперь я не хочу, чтобы мой коллега видел, что я много раз коммитил код за последние 2 часа, не добавляя ценности к моему коду:

Последние 18 коммитов (кроме последнего, то есть 17 коммитов перед последним) были бесполезными. Поэтому я хочу удалить их и оставить последний. То есть я хочу прежде всего удалить историю git коммитов тех, о которых упоминалось.

Как это сделать? Я видел, что интерактивный rebase может помочь в этом случае, но какая точная команда для использования?

Два предложения:

  1. Вашим коллегам не должно быть важно, что вы тестируете свой код. Это нормальная часть разработки программного обеспечения. Просто будьте честны по этому поводу, и они поймут 🙂
  2. Если вы хотите очистить историю в своей локальной ветке, используйте перезапись истории git. После того, как вы перепишите свою локальную ветку, вы можете “принудительно отправить” вашу ветку в ваш удаленный репозиторий, чтобы обновить его и удалить ваши коммиты оттуда тоже.

Ответ или решение

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

Шаги по удалению коммитов:

  1. Откройте терминал и перейдите в директорию вашего проекта, где вы работаете с Git.

  2. Запустите интерактивный ребейз. Чтобы начать процесс, введите следующую команду:

    git rebase -i HEAD~18

    Здесь HEAD~18 указывает на то, что вы хотите редактировать последние 18 коммитов.

  3. Редактирование списка коммитов. После выполнения команды откроется редактор, где вы увидите список из 18 последних коммитов:

    pick <hash1> Commit message 1
    pick <hash2> Commit message 2
    ...
    pick <hash17> Commit message 17
    pick <hash18> Commit message 18
  4. Удалите ненужные коммиты. Чтобы удалить коммиты, которые вы хотите исключить, измените слово pick на drop или просто удалите строки с ненужными коммитами, оставив только последний коммит, который вы хотите сохранить. Пример:

    drop <hash1> Commit message 1
    drop <hash2> Commit message 2
    ...
    drop <hash16> Commit message 16
    pick <hash17> Commit message 17
  5. Сохраните и закройте редактор. После внесения изменений сохраните файл и закройте редактор. Git начнет процесс ребейза, удаляя выбранные вами коммиты.

  6. Принудительное обновление удаленного репозитория. После успешного завершения ребейза вам, возможно, нужно будет выполнить принудительную отправку изменения в удаленный репозиторий. Используйте команду:

    git push origin <ваша-ветка> --force

    Замените <ваша-ветка> на имя текущей ветки. Будьте осторожны с принудительным пушем, так как он может переписать историю в удаленном репозитории и повлиять на других участников команды.

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

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

Оцените материал
Добавить комментарий

Капча загружается...