Наконец, git commit -a --allow-empty-message -m ''даже редактор больше не открывается. Смотрите мой ответ ниже
VonC
2
В Windows эта команда git commit -a --allow-empty-message -m ''марки коммит сообщение фиксации « ''», так что лучше использовать эту команду вместо: git commit -a --allow-empty-message -m "".
tav
Ответы:
138
Для git обычно требуется непустое сообщение, потому что предоставление значимого сообщения о фиксации является частью хорошей практики разработки и хорошего управления репозиторием. Первая строка сообщения о фиксации используется повсюду в git; для получения дополнительной информации прочтите «Замечание о сообщениях коммитов Git» .
Если вы откроете Terminal.app cdв каталог своего проекта и git commit -am '', вы увидите, что он не работает, потому что пустое сообщение фиксации недопустимо. Более новые версии git имеют --allow-empty-messageаргумент командной строки, включая версию git, включенную в последнюю версию Xcode. Это позволит вам использовать эту команду для фиксации с пустым сообщением:
git commit -a --allow-empty-message -m ''
До --allow-empty-messageфлага нужно было использовать команду commit-treeсантехники. Вы можете увидеть пример использования этой команды в главе «Raw Гита» из книги Гита .
В более новых версиях gitесть --allow-empty-messageаргумент командной строки. См. Документацию здесь . В нем упоминается, что вы могли делать то же самое с помощью команды сантехники git-commit-tree.
Джереми В. Шерман
18
Я думаю, что предложение «предоставление значимого сообщения о фиксации является частью хорошей практики разработки» просто неверно - можно сказать, что предоставление значимого сообщения о фиксации считается частью хорошей практики разработки, поскольку это утверждение в любом случае вызывает разногласия - я, например считают, что меньшее количество информации иногда приводит к меньшей путанице, особенно потому, что git, очевидно, хранит фактические изменения в репозитории, и a git diffпокажет заинтересованной стороне, что именно содержит фиксация, не полагаясь на письменные описания, написанные людьми. Машины должны избавлять нас от труда там, где это возможно.
amn
2
@amn, я также просто начал интересоваться всеми теми десятками тысяч хорошо написанных мною сообщений о коммитах, которые никогда не будут прочитаны никем. Для меня сейчас ценность этой привычки в том, что она заставляет меня просматривать изменения в попытке описать их, и это иногда заставляет меня замечать ошибки. Но ты прав. Я рассмотрю возможность уделить больше внимания коду и меньше - сообщению о фиксации.
osa
7
Git больше не используется только для разработки кода. Когда я обновляю вики-страницу GitHub или документ Overleaf LaTeX, мне обычно нечего сказать, потому что я обновляю документацию. Все семантически значимое в изменении содержится в файле diff. На самом деле я обнаружил, что использую текст изменения как само сообщение фиксации: полностью избыточно!
Джим Пиварски,
1
@amn, иногда вывод git diffне требует пояснений, даже если коммиттер считает, что это так.
cowlinator
26
А если добавить псевдоним, то даже лучше, правда?
git config --global alias.nccommit 'commit -a --allow-empty-message -m ""'
Теперь вы просто выполняете nccommit, nc из-за отсутствия комментариев, и все должно быть зафиксировано.
Если с параметром -mgit commit указано пустое сообщение, запускается редактор.
Это неожиданно и ненужно.
Вместо того, чтобы использовать длину строки сообщения для проверки, указал ли ее пользователь, запомните, -mбыла ли задана эта опция .
git 2.9 (июнь 2016 г.) улучшает поведение пустого сообщения:
commit: не игнорировать пустое сообщение, данное -m ''
" git commit --amend -m '' --allow-empty-message", хотя это выглядит странно, является допустимым запросом на изменение фиксации, чтобы вообще не было сообщения.
Из-за неправильного определения присутствия -mв командной строке мы закончили тем, что сохранили сообщения журнала из исходной фиксации.
" git commit -m "$msg" -F file" должно быть отклонено независимо $msgот того, пустая строка или нет, но из-за той же ошибки не было отклонено, когда $msgона пуста.
" git -c template=file -m "$msg"" должен игнорировать шаблон, даже если $msgон пуст, но он этого не сделал и вместо этого использовал содержимое из файла шаблона.
Для этого вам не нужен git. Творческое использование функции bash отлично подойдет. Если вас не интересуют сообщения, просто установите значение по умолчанию и забудьте о нем.
function gitcom() {
git commit -m "my default commit message"
}
Если вы действительно любите приключения, вы можете добавить, зафиксировать и продвинуть с помощью одной команды
Вы даже можете углубиться и использовать parse_git_branch, чтобы сэкономить там несколько нажатий клавиш, или установить общее значение по умолчанию «origin» и «master».
Не могли бы вы подробнее рассказать о том, как настроить эту функцию bash?
adaam
1
Предполагая, что вы используете OSX или Linux, вы можете скопировать эти функции и поместить их в свой .profile (он должен быть в вашей домашней папке, если нет, то создайте его). Откройте новое окно консоли, и эти команды станут вам доступны. Любые изменения, внесенные в эти файлы, потребуют от вас обновления сеанса bash, чтобы вы могли ускорить процесс, добавив в этот файл следующие псевдонимы: alias ea = "subl ~ / .profile" # subl - мой текстовый редактор, замените его собственным alias er = "source ~ / .profile" # это будет сброшено. Теперь, когда вы хотите добавить ярлыки, вы просто набираете "ea" (редактировать псевдонимы) И чтобы обновить er
Стивен Гарсия
2
Если вы назвали сценарии git-comи git-zap(без расширения) и помещают их где - то мерзавец может их (то есть где - то в вашем PATH) найти, Git рассматривает их как обычные команды Git , и вы можете вызывать их так: git com,git zap origin master
Manuzor
1
в Баш это либо function gitcom {или gitcom() {ТМК, исправить?
2
Git требует, чтобы у коммита был комментарий, иначе он не примет коммит.
Вы можете настроить шаблон по умолчанию с помощью git в качестве сообщения фиксации по умолчанию или посмотреть флаг --allow-empty-message в git. Я думаю (не уверен на 100%), что вы можете перенастроить git, чтобы он принимал пустые сообщения от коммитов (что не очень хорошая идея). Обычно каждый коммит требует небольшой работы, описанной в вашем сообщении.
Не уверен, почему этот ответ был отклонен. Я согласен с тем, что заставлять Git принимать пустые сообщения фиксации или использовать сообщение типа «сохранить» - плохая идея. Прекратите бороться с этим и просто изучите этот проклятый инструмент.
Джезен Томас
2
В моем частном проекте есть следующая конфигурация:
git config alias.auto 'commit -a -m "changes made from [device name]"'
Таким образом, когда я тороплюсь, я делаю
git auto
git push
И, по крайней мере, я знаю, с какого устройства был сделан коммит.
Сообщение о фиксации - это лучшая практика, которой следует всегда следовать. Если только вы не единственный разработчик, и это не изменится в ближайшее время.
это своего рода шутка. Но для небольших коммитов вам НЕОБХОДИМО внести изменения в heroku (например), это нормально в единственном экземпляре разработчика.
git commit -a --allow-empty-message -m ''
даже редактор больше не открывается. Смотрите мой ответ нижеgit commit -a --allow-empty-message -m ''
марки коммит сообщение фиксации «''
», так что лучше использовать эту команду вместо:git commit -a --allow-empty-message -m ""
.Ответы:
Для git обычно требуется непустое сообщение, потому что предоставление значимого сообщения о фиксации является частью хорошей практики разработки и хорошего управления репозиторием. Первая строка сообщения о фиксации используется повсюду в git; для получения дополнительной информации прочтите «Замечание о сообщениях коммитов Git» .
Если вы откроете Terminal.app
cd
в каталог своего проекта иgit commit -am ''
, вы увидите, что он не работает, потому что пустое сообщение фиксации недопустимо. Более новые версии git имеют--allow-empty-message
аргумент командной строки, включая версию git, включенную в последнюю версию Xcode. Это позволит вам использовать эту команду для фиксации с пустым сообщением:До
--allow-empty-message
флага нужно было использовать командуcommit-tree
сантехники. Вы можете увидеть пример использования этой команды в главе «Raw Гита» из книги Гита .источник
git
есть--allow-empty-message
аргумент командной строки. См. Документацию здесь . В нем упоминается, что вы могли делать то же самое с помощью команды сантехникиgit-commit-tree
.git diff
покажет заинтересованной стороне, что именно содержит фиксация, не полагаясь на письменные описания, написанные людьми. Машины должны избавлять нас от труда там, где это возможно.git diff
не требует пояснений, даже если коммиттер считает, что это так.А если добавить псевдоним, то даже лучше, правда?
Теперь вы просто выполняете nccommit, nc из-за отсутствия комментариев, и все должно быть зафиксировано.
источник
При работе над важным обновлением кода, если вам действительно нужна промежуточная точка безопасности, вы можете просто сделать:
или короче:
источник
diff
все это лень .Примечание: начиная с git1.8.3.2 (июль 2013), следующая команда ( уже упоминалось выше по Джереми W Sherman ) не будет открывать редактор больше:
См. Commit 25206778aac776fc6cc4887653fdae476c7a9b5a :
git 2.9 (июнь 2016 г.) улучшает поведение пустого сообщения:
См. Commit 178e814 (06 апреля 2016 г.) Адам Динвуди (
me-and
) .См. Commit 27014cb (7 апреля 2016 г.) Джеффа Кинга (
peff
) .(Объединено Junio C Hamano -
gitster
- в коммите 0709261 , 22 апреля 2016 г.)источник
Для этого вам не нужен git. Творческое использование функции bash отлично подойдет. Если вас не интересуют сообщения, просто установите значение по умолчанию и забудьте о нем.
Если вы действительно любите приключения, вы можете добавить, зафиксировать и продвинуть с помощью одной команды
Что вы затем запустите как
Вы даже можете углубиться и использовать parse_git_branch, чтобы сэкономить там несколько нажатий клавиш, или установить общее значение по умолчанию «origin» и «master».
источник
git-com
иgit-zap
(без расширения) и помещают их где - то мерзавец может их (то есть где - то в вашем PATH) найти, Git рассматривает их как обычные команды Git , и вы можете вызывать их так:git com
,git zap origin master
function gitcom {
илиgitcom() {
ТМК, исправить?Git требует, чтобы у коммита был комментарий, иначе он не примет коммит.
Вы можете настроить шаблон по умолчанию с помощью git в качестве сообщения фиксации по умолчанию или посмотреть флаг --allow-empty-message в git. Я думаю (не уверен на 100%), что вы можете перенастроить git, чтобы он принимал пустые сообщения от коммитов (что не очень хорошая идея). Обычно каждый коммит требует небольшой работы, описанной в вашем сообщении.
источник
В моем частном проекте есть следующая конфигурация:
Таким образом, когда я тороплюсь, я делаю
И, по крайней мере, я знаю, с какого устройства был сделан коммит.
источник
Я нашел самое простое решение:
Вот и все, вы будете работать с сообщениями git commit.
вы даже можете сохранить эту рекомендацию в bash или другом материале, чтобы упростить задачу.
Члены нашей команды всегда пишут эти сообщения, но почти никто не увидит их снова.
Сообщение о фиксации убивает время, по крайней мере, в нашей команде, поэтому мы игнорируем его.
источник
Сообщение о фиксации - это лучшая практика, которой следует всегда следовать. Если только вы не единственный разработчик, и это не изменится в ближайшее время.
источник