Git commit без повідомлення комісії


108

Як я можу здійснити зміни, не вказавши повідомлення про фіксацію? Чому це потрібно за замовчуванням?


6
Нарешті, git commit -a --allow-empty-message -m ''навіть більше не відкриватимуть редактора. Дивіться мою відповідь нижче
VonC

2
У Windows ця команда git commit -a --allow-empty-message -m ''марки Комміт повідомлення фіксації « ''», так що краще використовувати цю команду замість: git commit -a --allow-empty-message -m "".
тав

Відповіді:


137

git, як правило, вимагає не порожнього повідомлення, оскільки надання значущого повідомлення про фіксацію є частиною належної практики розробки та хорошого керівництва сховищем. Перший рядок повідомлення фіксації використовується в усьому місці в git; детальніше читайте "Примітку про повідомлення Git Comm" .

Якщо ви відкриєте 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 Гіта» з книги Гіта .


1
Новіші версії gitмають --allow-empty-messageаргумент командного рядка. Дивіться документацію тут . Він згадує, що раніше ви могли виконати те саме, використовуючи сантехнічну команду git-commit-tree.
Джеремі В. Шерман

18
Я думаю, що пропозиція "надання змістовного повідомлення про прихильність є частиною належної практики розвитку" є помилковим - можна сказати, що надання змістовного повідомлення про вчинення вважається частиною належної практики розвитку, оскільки твердження все одно поділяється - я для одного вважають, що менше інформації іноді призводить до меншої плутанини, тим більше, що git, очевидно, зберігає фактичні зміни у сховищі, а git diffзаповіт покаже зацікавленій стороні, що саме містить комітет, не покладаючись на письмові описи людини. Машини повинні врятувати нас від праці, де це можливо.
атп

2
@amn, я також тільки почав цікавитись усіма цими десятками тисяч добре написаних повідомлень про вчинення, які я написав, і ніколи їх ніхто не прочитає. Для мене зараз цінність цієї звички полягає в тому, що вона змушує переглядати зміни в спробі їх опису, і це іноді змушує мене помітити помилки. Ти прав, правда. Я розглядаю, як приділяти більше уваги коду і менше повідомленню про фіксацію.
оса

7
Git вже не просто використовується для розробки коду. Коли я оновлюю вікі-сторінку GitHub або документ LaTeX Overleaf, зазвичай нічого не можна сказати, оскільки я оновлюю документацію. Все семантично значуще щодо зміни міститься в розл. Я фактично опинився, використовуючи текст зміни як повідомлення про фіксацію: повністю зайве!
Джим Піварський

1
@amn, іноді вихідні дані git diffне є зрозумілими, навіть коли комітер вважає, що це є.
ковбасник

26

А якщо ви додасте псевдонім для нього, то це ще краще, чи не так?

git config --global alias.nccommit 'commit -a --allow-empty-message -m ""'

Тепер ви просто робите nccommit, nc через відсутність коментарів, і все повинно бути зроблено.


19

Працюючи над важливим оновленням коду, якщо вам дійсно потрібна проміжна безпечна точка, ви можете просто зробити:

git commit -am'.'

або коротше:

git commit -am.

І що це робить?
fishinear

Додає команду із повідомленням "."
недіадичне

Я використовую цей метод, коли в буквальному сенсі не згадую те, що я вклав у зобов’язання, і я занадто лінивий на diffвсе це.
TheTechRobo36414519

16

Примітка: починаючи з git1.8.3.2 (липень 2013), наступна команда ( вже згадувалося вище за Джеремі W Sherman ) не відкриватиме редактор більше:

git commit --allow-empty-message -m ''

Див. Комісію 25206778aac776fc6cc4887653fdae476c7a9b5a :

Якщо порожнє повідомлення вказане з опцією -mgit commit, тоді запускається редактор.
Це несподівано і непотрібно.
Замість того, щоб використовувати довжину рядка повідомлення для перевірки, чи вказав користувач таке, безпосередньо запам'ятайте, чи -mбула надана опція .


git 2.9 (червень 2016 р.) покращує поведінку порожніх повідомлень:

Див. Коміт 178e814 (06 квітня 2016) Адама Дінвуді ( me-and) .
Див здійснювати 27014cb (7 квітня 2016) від Jeff King ( peff) .
(Об’єднано Хуніо С Хамано - gitster- у комітеті 0709261 , 22 квітня 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він порожній, але він цього не зробив, а натомість використовував вміст із файлу шаблону.

3

Для цього вам не потрібен git. Творче використання функції bash дозволить трюку просто чудово. Якщо вас не цікавлять повідомлення, просто встановіть стандартне і забудьте його.

function gitcom() {
  git commit -m "my default commit message"
}

Якщо ви відчували себе справді авантюрними, ви можете додавати, виконувати та натискати однією командою

function gitzap() {
  git add . && git commit -m "whatevs" && git push $1 $2
}

Який би ви тоді працювали як

gitzap origin master

Ви можете навіть заглибитися і скористатися parse_git_branch, щоб зберегти собі деякі натискання клавіш або встановити загальний стандарт за замовчуванням "origin" та "master".


1
Чи можете ви надати ще детальну інформацію про те, як налаштувати цю функцію bash?
адаам

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
в bash це function gitcom {або gitcom() {TMK, виправити?

2

Git вимагає зобов'язання, щоб мати коментар, інакше він не приймає зобов’язання.

Ви можете налаштувати шаблон за замовчуванням за допомогою git як повідомлення про фіксацію за замовчуванням або можете знайти прапор --allow-empty-message у git. Я думаю (не впевнено на 100%), ви можете перенастроїти git для прийому порожніх повідомлень про фіксацію (що не така гарна ідея). Зазвичай кожне зобов’язання повинно бути певною роботою, яку описує ваше повідомлення.


1
Не впевнений, чому ця відповідь була заперечена. Я погоджуюся, що змушувати Git приймати порожні повідомлення про фіксацію або використовувати повідомлення типу "зберегти" - це погана ідея. Перестаньте боротися з цим, і просто вивчіть проклятий інструмент.
Єзен Томас

1

Я знайшов найпростіше рішення:

git commit -am'save'

Ось і все, ви будете працювати над повідомленнями з git commit.

Ви можете навіть зберегти цю похвалу на баш або інші речі, щоб зробити це більш простим.

Члени нашої команди завжди пишуть ці повідомлення, але майже ніхто їх більше не побачить.

Повідомлення про скоєння - це вбивство часу, принаймні в нашій команді, тому ми ігноруємо його.


1

У моєму приватному проекті є така конфігурація:

git config alias.auto 'commit -a -m "changes made from [device name]"'

Так я колись поспішаю

git auto
git push

І принаймні я знаю, з якого пристрою було зроблено фіксацію.


-5

Повідомлення про вчинення - найкраща практика, якої слід дотримуватися постійно. Якщо ви не єдиний розробник, це скоро не зміниться.

git commit -a -m 'asdfasdfadsfsdf'

це свого роду жарт. Але для невеликих зобов’язань ви повинні внести зміни до heroku (наприклад), його нормально в єдиному екземплярі розробника.
coloradoblue
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.