Предположим, один файл получает несколько изменений, связанных с различными проблемами. Мы можем легко опубликовать git commit с примечанием, чтобы описать каждое изменение для каждой проблемы, подтолкнуть его и напомнить себе не делать этого снова.

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

  1. Скопируйте готовый рабочий файл в новый файл Final.
  2. Верните рабочий файл обратно в его последнее состояние фиксации.
  3. Различают рабочий файл и финальный файл и объединяют отдельные строки для решения проблемы.
  4. Передайте с чистым комментарием для единственной проблемы.
  5. Повторите по мере необходимости.
  6. Удалите окончательный файл, так как теперь он является только копией текущего рабочего файла.

Есть ли лучший способ сделать это, кроме "не делай этого"? Короче, я собираю вишню в одном файле. Но, как знает любой разработчик, изменения могут распространяться на несколько файлов, и иногда трудно избежать внесения изменений прямо сейчас, когда мы смотрим прямо на строку, которую необходимо изменить, по сравнению с пометкой об этом и возвращением позже для выделенного изменение / фиксации. Благодарю.

1 ответ1

0

Да, в этом и заключается цель Git "области подготовки". Коммиты на самом деле не хранят рабочее дерево, а только те изменения, которые вы скопировали в область подготовки. Вы уже использовали git add для создания отдельных файлов при подготовке к фиксации, но он также позволяет выполнять более детальные операции. Смотрите, например, главу 7.2 в Git Book.

Обычная картина использовать git add -p , чтобы выбрать отдельные Diff ломти, с возможностью E DIT их дальше (например , в случае , если у вас есть несвязанные строки в одной и той же красавчик). Также есть соответствующий git reset -p для отмены отдельных изменений, если вы добавили слишком много.

Используйте git diff --cached чтобы увидеть, что ставится. Наконец, просто запустите git commit как обычно.

(Если вам нужен ярлык, git commit -p делает все за один шаг.)

Вы также можете запустить git gui или git citool чтобы получить графический интерфейс коммитов, который имеет возможность выделять отдельные строки с помощью мыши (щелчок правой кнопкой мыши по сцене). Он также встроен в большинство других графических клиентов Git. Тем не менее, они обычно работают только на уровне всей строки - если ваш файл имеет несвязанные изменения в той же строке, вам все равно придется использовать git add -p и вручную редактировать патч.

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