Напишите git сообщение фиксации до 'git commit' - программирование
Подтвердить что ты не робот

Напишите git сообщение фиксации до 'git commit'

Я изучаю Git, исходя из Perforce.

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

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

Возможно с Git?

4b9b3361

Ответ 1

Взгляните на флаг -t <file> с помощью git commit

Это позволяет указать файл для использования в качестве основы для сообщения фиксации. Редактор по-прежнему вызывается, но по крайней мере вы можете использовать сообщение фиксации, которое вы создаете заранее.

Альтернативно существует другой рабочий процесс, который вы можете использовать с git, который может лучше соответствовать вашему способу работы:

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

После того, как вы готовы зафиксировать сумму своей работы, вы можете использовать команду rebase и squash, которые объединяются вместе. Затем ваш редактор будет вызываться со всеми отдельными сообщениями, которые вы использовали для небольших коммитов, которые затем можно редактировать вместе в одном сообщении.

Это намного проще, чем здесь звучит, и IMHO более похож на git.

Ответ 2

Пока у вас нет push вашей фиксации для других, вы можете сделать git commit --amend. Это позволит вам изменить вашу фиксацию, а также сообщение о фиксации.

Я нашел, что это действительно помогает с "фиксацией рано и часто", без переполнения количеством тривиальных коммитов.

Ответ 3

Вы можете использовать эти псевдонимы:

git config --global alias.prepare '!${EDITOR:-vi} $(git rev-parse --git-dir)/.template'
git config --global alias.commitp '!git commit -F $(git rev-parse --git-dir)/.template'

Использование:

git prepare
EDITOR=nano git prepare # heeds standard EDITOR variable
git commitp

Это сохраняет ваше сообщение фиксации в .git/.template.

Вместо этого вы должны просто использовать рабочий процесс, где вы часто совершаете атомарные и небольшие изменения, и при необходимости используйте ветки функций, чтобы сгруппировать эти изменения. Если вы слились с git merge --no-ff $branch, вы можете использовать git log --first-parent позже, чтобы игнорировать ветки.

Ответ 4

Вы можете использовать git gui и просто оставить его открытым во время работы. Напишите сообщение фиксации для исправления, которое вы собираетесь сделать, затем выполните фактические изменения кода, выполните его и скопируйте.

Ответ 5

записать его в файл; обновляйте его при работе. Включите окончательную версию, когда вы действительно совершаете.

Если вы используете графический интерфейс для git, тогда вам нужно будет указать, чтобы кто-то мог с ним помочь. В общем, вы можете просто вставить сообщение.

Используя git из командной строки, он откроет ваш редактор с временным файлом, и вы сможете прочитать сообщение в нем (например: r имя_файла в vim).

Или вы можете использовать свою оболочку для чтения этого файла в качестве значения параметра -m:

# bash example, may work elsewhere
git commit -m "$(<filename)"

Ответ 6

Я считаю, что мотивация для этого вопроса заключается в том, чтобы написать описание (сообщение фиксации) до написания любого кода (хотя, конечно, его можно модифицировать при написании кода). (Раньше я использовал Perforce и Perforce-подобную систему, я знаю, что иногда это помогает в том настроении, где вы пишете описание того, что вы собираетесь делать, прежде чем писать код для этого.)

Помимо написания сообщения в файле и использования флагов -t <file> (--template=<file>) или -F <file> (--file=<file>) для git commit, следующий подход следующий:

  • Сделайте пустую фиксацию с помощью git commit --allow-empty. Это будет, как и любой git commit, вызвать редактор, в котором вы можете написать сообщение. Напишите его и завершите фиксацию.

  • Внесите изменения в свой код.

  • Добавьте файлы, которые вы хотите добавить, с помощью git add, а затем git commit --amend (или просто git commit -a --amend, если вы не хотите выделять определенные файлы с помощью git add). Это приведет к тому, что более ранняя непустая фиксация теперь не будет пустой, и вы также можете отредактировать сообщение, чтобы более точно соответствовать тому, что вы на самом деле сделали (если хотите).

(Если вы работаете с другими людьми, не забывайте при этом git push: не корректируйте, что вы уже нажали!)

Конечно, совет, чтобы ваши коммиты были как можно меньшими и атомными, по-прежнему применяется, но таким образом вы можете написать сообщение перед написанием кода. (Подход git commit --amend уже был предложен в другом ответе, я только указываю, что вы можете пройти весь путь, используя git commit --allow-empty.)

Ответ 7

Построен, насколько я знаю. Если вы действительно в отчаянии, вы можете записать его в терминале, например COMMIT="Fix for bug #14453", COMMIT="$COMMIT and bug #4329", а затем зафиксировать как git commit -m "$COMMIT".

Ответ 8

Используйте аргумент --file <path> для команды commit.

git commit --file <absolute or relative path to file>

И замените < абсолютный или относительный путь к файлу > на путь к файлу.

 

Пример для относительного файла в каталоге над каталогом репозитория:

git commit --file ../commit-message.txt

 

Вы можете работать с сообщением фиксации в любом текстовом редакторе и оставлять его открытым. Просто сохраните файл и затем скопируйте с помощью постоянной команды commit. Он принимает сообщение из текстового файла (.txt), не открывая редактор.