Вопрос или проблема
В настоящее время я использую git gui для быстрого создания коммитов и визуализации изменений.
У меня есть плохая привычка (да, я знаю) не коммитить так часто, как следовало бы, и обычно я заканчиваю с изменениями, которые относятся к нескольким коммитам.
Вместо того чтобы просматривать все изменения, создавать один коммит, снова просматривать все изменения и создавать другой коммит, я задавался вопросом, есть ли какие-либо графические инструменты, которые позволили бы мне создать несколько коммитов сразу.
Идеально было бы только один раз просмотреть все изменения, решить, в какой коммит должно идти каждое изменение, решить порядок созданных мной коммитов и пакетно создать все коммиты за один раз.
(Я также приветствую решения для командной строки, которые могли бы это хорошо обрабатывать, если они существуют…)
В настоящее время я использую Linux и предпочел бы бесплатное решение (но буду рад любому, что выполняет задачу, просто чтобы его проверить)
Возможно, правильным поисковым термином будет «несколько зон подготовительных изменений».
Релевантный вопрос на SO: https://stackoverflow.com/questions/47473768/is-it-possible-to-stage-multiple-sets-of-changes-separately-in-git
Лучшее, что я смог найти, это бета-программное обеспечение: http://ben.villagechief.com/2012/01/multiple-git-staging-areas.html
Ответ или решение
Эффективное управление коммитами в Git: инструменты и стратегии для создания нескольких коммитов сразу
Введение
В работе с системами контроля версий, такими как Git, одна из ключевых практик — частое и адекватное создание коммитов. Тем не менее, многие разработчики, включая вас, иногда откладывают коммиты, что приводит к накоплению несоответствующих изменений в одном коммите. Решение вашей проблемы заключается в использовании графического интерфейса (GUI) или командной строки для упрощения процесса создания нескольких коммитов одновременно.
Потребности разработчика
Вы ищете инструменты, которые позволят:
- Один раз просмотреть все изменения.
- Определить, какие изменения соответствуют каждому коммиту.
- Установить порядок коммитов.
- Пакетно создать все коммиты за один раз.
Решения для графических интерфейсов Git
На рынке доступно несколько GUI-инструментов, которые могут помочь справиться с вашим запросом:
-
Sourcetree
- Описание: Это бесплатный графический клиент для Git, который предлагает интуитивно понятный интерфейс.
- Особенности: Sourcetree позволяет вам создавать «интерактивный» процесс стейджинга, где вы можете выбирать отдельные изменения и группировать их для последующих коммитов. Вы можете использовать возможность "staging area", чтобы разбить ваши изменения на несколько наборов, а затем создавать коммиты по очереди.
-
GitKraken
- Описание: Хотя GitKraken — это платное решение, оно предлагает мощный бесплатный план для открытых проектов.
- Особенности: Его интерфейс обеспечивает пользовательские рабочие процессы, которые позволяют легко управлять несколькими коммитами. Вы можете выделять изменения и перемещать их по порядку в нужный коммит.
-
Git Extensions
- Описание: Этот инструмент также предоставляет богатый функционал для работы с Git и хорошую визуализацию.
- Особенности: Git Extensions позволяет вам выбирать изменения для временного хранения, а затем создавать коммиты на основе этих наборов.
Командно-строчные решения
Если вы предпочитаете использовать командную строку, существует несколько стратегий, которые могут выполнить ваши требования:
-
Git Stash с патчами
- Вы можете использовать команду
git stash -p
, чтобы интерактивно выбрать изменения для временного хранения, а затем переключаться между коммитами, создавая каждую из них по очереди.
- Вы можете использовать команду
-
Амперсанд (
&&
) для последовательных команд- Можете использовать
git add
для каждого набора изменений, перед созданием коммитов. Пример:git add файл1 git commit -m "Описание коммита 1" && git add файл2 git commit -m "Описание коммита 2"
- Можете использовать
-
Использование
git rebase -i
- Если вы уже сделали несколько коммитов и хотите разложить их на более мелкие, можно воспользоваться интерактивной переработкой, что даст вам возможность слипать существующие коммиты и отдельные изменения в новые.
Заключение
Существует множество инструментов и подходов для работы с несколькими коммитами в Git, как через GUI, так и через командную строку. Выбор подходящего инструмента зависит от ваших предпочтений и рабочего процесса. Понимание и внедрение вышеописанных методов позволит вам создать более организованную и поддерживаемую структуру репозитория, что впоследствии приведет к упрощению совместной работы и минимизации конфликтов.
Не забывайте, что регулярные коммиты помогают отслеживать изменения и упрощают процесс разработки. Выбор подходящего инструмента и стратегии может значительно повысить вашу эффективность как разработчика.