HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p><em>Примечание - Это адаптированный перевод статьи Криса Бимса<a>How to write a Git commit message</a>. Повествование ведётся от имени автора оригинала.</em></p>
1 <p><em>Примечание - Это адаптированный перевод статьи Криса Бимса<a>How to write a Git commit message</a>. Повествование ведётся от имени автора оригинала.</em></p>
2 <h2>Содержание</h2>
2 <h2>Содержание</h2>
3 <ul><li><a>История</a></li>
3 <ul><li><a>История</a></li>
4 <li><a>Семь правил хорошего описания коммита</a></li>
4 <li><a>Семь правил хорошего описания коммита</a></li>
5 <li><a>Вместо заключения: полезные советы</a></li>
5 <li><a>Вместо заключения: полезные советы</a></li>
6 </ul><h2>История</h2>
6 </ul><h2>История</h2>
7 <p>Заглянув в историю изменений (коммитов) какого-то рандомного Git-репозитория, вы наверняка заметите, что описания коммитов (commit messages) написаны в той или иной степени беспорядочно. Например, посмотрите на описания коммитов, которые я написал, когда начинал контрибьютить в Spring:</p>
7 <p>Заглянув в историю изменений (коммитов) какого-то рандомного Git-репозитория, вы наверняка заметите, что описания коммитов (commit messages) написаны в той или иной степени беспорядочно. Например, посмотрите на описания коммитов, которые я написал, когда начинал контрибьютить в Spring:</p>
8 <p>Выглядит не очень привлекательно. Теперь посмотрите на описания более поздних коммитов в том же репозитории.</p>
8 <p>Выглядит не очень привлекательно. Теперь посмотрите на описания более поздних коммитов в том же репозитории.</p>
9 <p>Какие из этих описаний вы прочитаете охотнее? Старые отличаются по форме и по длине, а новые более лаконичные и однообразные. Старые как будто написаны хаотично и без системы, а новые явно писались осознанно и по упорядоченным правилам.</p>
9 <p>Какие из этих описаний вы прочитаете охотнее? Старые отличаются по форме и по длине, а новые более лаконичные и однообразные. Старые как будто написаны хаотично и без системы, а новые явно писались осознанно и по упорядоченным правилам.</p>
10 <p>Как я уже говорил, примеры беспорядочных описаний можно найти в историях изменений разных репозиториев. Но есть приятные исключения, например, репозитории<a>ядра Linux</a>и самого<a>Git</a>.</p>
10 <p>Как я уже говорил, примеры беспорядочных описаний можно найти в историях изменений разных репозиториев. Но есть приятные исключения, например, репозитории<a>ядра Linux</a>и самого<a>Git</a>.</p>
11 <p>Контрибьюторы этих репозиториев понимают, что правильно оформленные описания - лучший способ передать контекст коммита другим контрибьюторам, а также будущему себе. Диф помогает понять, что именно меняет коммит. Но только описания коммитов помогут понять,<em>зачем</em>это меняется. Важность этого момента хорошо объясняет разработчик Петер Хуттерер (Peter Hutterer)<a>в своём посте</a>. Вот ключевая цитата из него:</p>
11 <p>Контрибьюторы этих репозиториев понимают, что правильно оформленные описания - лучший способ передать контекст коммита другим контрибьюторам, а также будущему себе. Диф помогает понять, что именно меняет коммит. Но только описания коммитов помогут понять,<em>зачем</em>это меняется. Важность этого момента хорошо объясняет разработчик Петер Хуттерер (Peter Hutterer)<a>в своём посте</a>. Вот ключевая цитата из него:</p>
12 <blockquote><p>Тратить время на восстановление контекста создания кода слишком дорого. Нельзя полностью обойтись без этого, но мы должны минимизировать такие затраты ресурсов. Правильные описания коммитов уменьшают необходимость восстанавливать контекст. В конце концов по описаниям коммитов можно понять, насколько хорошо программист работает в команде.</p>
12 <blockquote><p>Тратить время на восстановление контекста создания кода слишком дорого. Нельзя полностью обойтись без этого, но мы должны минимизировать такие затраты ресурсов. Правильные описания коммитов уменьшают необходимость восстанавливать контекст. В конце концов по описаниям коммитов можно понять, насколько хорошо программист работает в команде.</p>
13 </blockquote><p>Если вы не задумывались, зачем нужны правильные описания коммитов, то наверняка вы не очень часто пользовались командой git log. Фактически, это порочный круг: из-за беспорядка в истории коммитов разработчики не хотят заглядывать в неё или заботиться о корректности собственных описаний коммитов. А история остаётся беспорядочной и неудобной, потому что разработчики не пользуются ей и не заботятся о корректности описаний коммитов.</p>
13 </blockquote><p>Если вы не задумывались, зачем нужны правильные описания коммитов, то наверняка вы не очень часто пользовались командой git log. Фактически, это порочный круг: из-за беспорядка в истории коммитов разработчики не хотят заглядывать в неё или заботиться о корректности собственных описаний коммитов. А история остаётся беспорядочной и неудобной, потому что разработчики не пользуются ей и не заботятся о корректности описаний коммитов.</p>
14 <p>Но правильно оформленная история коммитов - полезная и удобная вещь. Здесь вам пригодятся комманды git blame, revert, rebase, log, shortlog и так далее. С правильно оформленной историей изменений просмотр коммитов других разработчиков приобретает смысл. Кстати, при правильном оформлении истории изменений разобраться в ней можно самостоятельно, не привлекая к этой задаче авторов других коммитов. Вы получаете возможность понять, почему были внесены те или иные изменения в код несколько месяцев или лет назад.</p>
14 <p>Но правильно оформленная история коммитов - полезная и удобная вещь. Здесь вам пригодятся комманды git blame, revert, rebase, log, shortlog и так далее. С правильно оформленной историей изменений просмотр коммитов других разработчиков приобретает смысл. Кстати, при правильном оформлении истории изменений разобраться в ней можно самостоятельно, не привлекая к этой задаче авторов других коммитов. Вы получаете возможность понять, почему были внесены те или иные изменения в код несколько месяцев или лет назад.</p>
15 <p>В долгосрочной перспективе успех проекта зависит от того, насколько просто его поддерживать. У мейнтейнеров не так много инструментов, обеспечивающих простоту поддержки, которые могут сравниться по эффективности с правильно оформленной историей изменений. Поэтому стоит потратить время и научиться правильно её оформлять. Сначала необходимость правильно оформлять коммиты может показаться неудобством или лишней тратой времени. Но в конце концов эти усилия трансформируются в рост продуктивности команды и даже в повод для гордости.</p>
15 <p>В долгосрочной перспективе успех проекта зависит от того, насколько просто его поддерживать. У мейнтейнеров не так много инструментов, обеспечивающих простоту поддержки, которые могут сравниться по эффективности с правильно оформленной историей изменений. Поэтому стоит потратить время и научиться правильно её оформлять. Сначала необходимость правильно оформлять коммиты может показаться неудобством или лишней тратой времени. Но в конце концов эти усилия трансформируются в рост продуктивности команды и даже в повод для гордости.</p>
16 <p>Эта статья о том, как правильно составлять описания коммитов. Это простой способ сделать историю изменений репозитория читабельной и информативной.</p>
16 <p>Эта статья о том, как правильно составлять описания коммитов. Это простой способ сделать историю изменений репозитория читабельной и информативной.</p>
17 <p>В большинстве языков программирования есть соглашения по стилю написания кода, включая<a>именование</a>, форматирование и так далее. Естественно, существуют разные подходы к решению тех или иных задач. Но большинство программистов уверены, что лучше выбрать одну систему и следовать ей, чем работать без соглашений и сталкиваться с хаосом, который появляется, когда каждый разработчик пишет код без какой-то системы.</p>
17 <p>В большинстве языков программирования есть соглашения по стилю написания кода, включая<a>именование</a>, форматирование и так далее. Естественно, существуют разные подходы к решению тех или иных задач. Но большинство программистов уверены, что лучше выбрать одну систему и следовать ей, чем работать без соглашений и сталкиваться с хаосом, который появляется, когда каждый разработчик пишет код без какой-то системы.</p>
18 <p>Команде разработчиков также стоит придерживаться соглашений при работе с репозиториями в целом и формировании истории изменений в частности. Соглашение должно касаться как минимум трёх базовых вещей:</p>
18 <p>Команде разработчиков также стоит придерживаться соглашений при работе с репозиториями в целом и формировании истории изменений в частности. Соглашение должно касаться как минимум трёх базовых вещей:</p>
19 <p><strong>Стиль</strong></p>
19 <p><strong>Стиль</strong></p>
20 <p>В этот пункт входят синтаксис разметки, правила переноса, грамматика, пунктуация, использование прописных и строчных букв. Подробно опишите эти моменты и сделайте это как можно проще, чтобы избежать недопонимания. Благодаря этому вы получите историю изменений, которую не только приятно читать, но которую ещё и действительно регулярно читают разработчики.</p>
20 <p>В этот пункт входят синтаксис разметки, правила переноса, грамматика, пунктуация, использование прописных и строчных букв. Подробно опишите эти моменты и сделайте это как можно проще, чтобы избежать недопонимания. Благодаря этому вы получите историю изменений, которую не только приятно читать, но которую ещё и действительно регулярно читают разработчики.</p>
21 <p><strong>Контент</strong></p>
21 <p><strong>Контент</strong></p>
22 <p>Что нужно писать в описании коммита? Чего в нём быть не должно?</p>
22 <p>Что нужно писать в описании коммита? Чего в нём быть не должно?</p>
23 <p><strong>Метаданные</strong></p>
23 <p><strong>Метаданные</strong></p>
24 <p>Как нужно отмечать ID issue, номера пулреквестов и так далее?</p>
24 <p>Как нужно отмечать ID issue, номера пулреквестов и так далее?</p>
25 <p>К счастью, есть общепринятые соглашения по поводу того, какими должны быть описания коммитов. Некоторые из них частично связаны с тем, как работают те или иные команды Git. То есть вам не придётся придумывать что-то самостоятельно. Придерживайтесь описанных ниже семи правил, и вы будете коммитить как профессионал.</p>
25 <p>К счастью, есть общепринятые соглашения по поводу того, какими должны быть описания коммитов. Некоторые из них частично связаны с тем, как работают те или иные команды Git. То есть вам не придётся придумывать что-то самостоятельно. Придерживайтесь описанных ниже семи правил, и вы будете коммитить как профессионал.</p>
26 <h2>Семь правил хорошего описания коммита</h2>
26 <h2>Семь правил хорошего описания коммита</h2>
27 <h3>Правило 1: оставляйте пустую строку между заголовком и описанием</h3>
27 <h3>Правило 1: оставляйте пустую строку между заголовком и описанием</h3>
28 <p>Отрывок из справочных материалов о git commit:</p>
28 <p>Отрывок из справочных материалов о git commit:</p>
29 <blockquote><p>Хоть это и не обязательное требование, рекомендуется начинать описание коммита со строки длиной до 50 символов, которая обобщает изменения. За ней должна следовать пустая строка, а затем более подробное описание коммита. Текст до пустой строки - это заголовок описания коммита, он может использоваться в разных командах Git. Например, Git-format-patch(1) превращает коммит в электронное письмо, в теме которого используется заголовок описания, а в теле - само описание.</p>
29 <blockquote><p>Хоть это и не обязательное требование, рекомендуется начинать описание коммита со строки длиной до 50 символов, которая обобщает изменения. За ней должна следовать пустая строка, а затем более подробное описание коммита. Текст до пустой строки - это заголовок описания коммита, он может использоваться в разных командах Git. Например, Git-format-patch(1) превращает коммит в электронное письмо, в теме которого используется заголовок описания, а в теле - само описание.</p>
30 </blockquote><p>Во-первых, не каждый коммит должен иметь заголовок и описание. Иногда можно ограничиться одной строкой, если изменения очень простые.</p>
30 </blockquote><p>Во-первых, не каждый коммит должен иметь заголовок и описание. Иногда можно ограничиться одной строкой, если изменения очень простые.</p>
31 <p>В данном случае дополнительная информация не нужна. Если кому-то захочется узнать, какие именно ошибки были исправлены, это можно сделать с помощью комманд git show, git diff или git log -p.</p>
31 <p>В данном случае дополнительная информация не нужна. Если кому-то захочется узнать, какие именно ошибки были исправлены, это можно сделать с помощью комманд git show, git diff или git log -p.</p>
32 <p>Если вы делаете подобный коммит, удобно воспользоваться опцией -m в git commit:</p>
32 <p>Если вы делаете подобный коммит, удобно воспользоваться опцией -m в git commit:</p>
33 <p>А если коммит требует дополнительного объяснения, которое поможет другим разработчикам получить контекст, нужно делать подробное описание.</p>
33 <p>А если коммит требует дополнительного объяснения, которое поможет другим разработчикам получить контекст, нужно делать подробное описание.</p>
34 <p>Подробные описания коммитов с заголовком и телом неудобно писать с помощью опции -m в командной строке. В этом случае лучше делать описание коммита в редакторе. Если вы ещё не настроили редактор для работы с Git, прочитайте этот<a>раздел документации</a>, а также обратите внимание на наш курс<a>"Настройка окружения"</a>.</p>
34 <p>Подробные описания коммитов с заголовком и телом неудобно писать с помощью опции -m в командной строке. В этом случае лучше делать описание коммита в редакторе. Если вы ещё не настроили редактор для работы с Git, прочитайте этот<a>раздел документации</a>, а также обратите внимание на наш курс<a>"Настройка окружения"</a>.</p>
35 <p>В любом случае, отделять заголовок от тела описания полезно. Посмотрите на полную запись в журнале изменений.</p>
35 <p>В любом случае, отделять заголовок от тела описания полезно. Посмотрите на полную запись в журнале изменений.</p>
36 <p>А теперь выведем только заголовок с помощью git log --oneline:</p>
36 <p>А теперь выведем только заголовок с помощью git log --oneline:</p>
37 <p>Или с помощью команды git shortlog выведем сгруппированные по авторам коммиты. Здесь снова выводится только заголовок описания:</p>
37 <p>Или с помощью команды git shortlog выведем сгруппированные по авторам коммиты. Здесь снова выводится только заголовок описания:</p>
38 <p>В Git есть много других ситуаций, в которых в описании коммита важно иметь заголовок и тело. Но ни в одной ситуации это не работает, если между заголовком и телом описания нет пустой строки.</p>
38 <p>В Git есть много других ситуаций, в которых в описании коммита важно иметь заголовок и тело. Но ни в одной ситуации это не работает, если между заголовком и телом описания нет пустой строки.</p>
39 <h3>Правило 2: ограничивайте длину заголовка 50 символами</h3>
39 <h3>Правило 2: ограничивайте длину заголовка 50 символами</h3>
40 <p>Это не жёсткое ограничение, а практически полезная рекомендация. Соблюдение этого правила гарантирует читабельность заголовка. Также она заставляет автора коммита задуматься и описать изменения максимально коротко.</p>
40 <p>Это не жёсткое ограничение, а практически полезная рекомендация. Соблюдение этого правила гарантирует читабельность заголовка. Также она заставляет автора коммита задуматься и описать изменения максимально коротко.</p>
41 <blockquote><p>Полезный совет: если вам тяжело коротко описать коммит, это может говорить о том, что вы вносите слишком много изменений за раз. Постарайтесь делать небольшие коммиты.</p>
41 <blockquote><p>Полезный совет: если вам тяжело коротко описать коммит, это может говорить о том, что вы вносите слишком много изменений за раз. Постарайтесь делать небольшие коммиты.</p>
42 </blockquote><p>Пользовательский интерфейс GitHub учитывает эти соглашения. Он предупреждает вас, если длина заголовка превышает 50 символов. А если заголовок превышает 72 символа, он обрезается. Поэтому старайтесь уложиться в 50 символов, а 72 символа считайте красной чертой.</p>
42 </blockquote><p>Пользовательский интерфейс GitHub учитывает эти соглашения. Он предупреждает вас, если длина заголовка превышает 50 символов. А если заголовок превышает 72 символа, он обрезается. Поэтому старайтесь уложиться в 50 символов, а 72 символа считайте красной чертой.</p>
43 <h3>Правило 3: пишите заголовок с прописной (заглавной) буквы</h3>
43 <h3>Правило 3: пишите заголовок с прописной (заглавной) буквы</h3>
44 <p>Это очень простое правило: всегда пишите заголовок описания с прописной буквы. Правильный пример:</p>
44 <p>Это очень простое правило: всегда пишите заголовок описания с прописной буквы. Правильный пример:</p>
45 <p>Неправильный пример:</p>
45 <p>Неправильный пример:</p>
46 <h3>Правило 4: не ставьте точку в конце заголовка описания</h3>
46 <h3>Правило 4: не ставьте точку в конце заголовка описания</h3>
47 <p>Это ещё одно простое правило: в конце заголовка точка не ставится. Кстати, лишние знаки пунктуации могут помешать вам уложиться в лимит длины 50 символов, о котором шла речь выше. Правильный пример:</p>
47 <p>Это ещё одно простое правило: в конце заголовка точка не ставится. Кстати, лишние знаки пунктуации могут помешать вам уложиться в лимит длины 50 символов, о котором шла речь выше. Правильный пример:</p>
48 <p>Неправильный пример:</p>
48 <p>Неправильный пример:</p>
49 <h3>Правило 5: используйте повелительное наклонение в заголовке</h3>
49 <h3>Правило 5: используйте повелительное наклонение в заголовке</h3>
50 <p>Если вы не знаете, что такое повелительное наклонение, думайте об этом так: заголовок должен быть похожим на команду или инструкцию. Вот примеры:</p>
50 <p>Если вы не знаете, что такое повелительное наклонение, думайте об этом так: заголовок должен быть похожим на команду или инструкцию. Вот примеры:</p>
51 <ul><li>Сделай уборку</li>
51 <ul><li>Сделай уборку</li>
52 <li>Закрой дверь</li>
52 <li>Закрой дверь</li>
53 <li>Вынеси мусор</li>
53 <li>Вынеси мусор</li>
54 </ul><p>Все семь правил из этой статьи сформулированы в повелительном наклонении. Например, "не ставьте точку в конце заголовка", "пишите заголовок с прописной буквы".</p>
54 </ul><p>Все семь правил из этой статьи сформулированы в повелительном наклонении. Например, "не ставьте точку в конце заголовка", "пишите заголовок с прописной буквы".</p>
55 <p>Повелительное наклонение может показаться грубым, поэтому мы не очень часто используем его в повседневной жизни. Но оно отлично подходит для заголовков в описаниях коммитов. Кстати, Git сам использует повелительное наклонение, когда делает коммиты от вашего имени. Например, при использовании команды git merge автоматически создаётся такое сообщение:</p>
55 <p>Повелительное наклонение может показаться грубым, поэтому мы не очень часто используем его в повседневной жизни. Но оно отлично подходит для заголовков в описаниях коммитов. Кстати, Git сам использует повелительное наклонение, когда делает коммиты от вашего имени. Например, при использовании команды git merge автоматически создаётся такое сообщение:</p>
56 <p>А вот сообщение, которое создаётся при использовании команды git revert:</p>
56 <p>А вот сообщение, которое создаётся при использовании команды git revert:</p>
57 <p>Ещё один пример - сообщение, которое создаётся, когда вы нажимаете кнопку Merge, чтобы принять пулреквест:</p>
57 <p>Ещё один пример - сообщение, которое создаётся, когда вы нажимаете кнопку Merge, чтобы принять пулреквест:</p>
58 <p>Поэтому использование повелительного наклонения соответствует общепринятым соглашениям Git. Вот несколько примеров заголовков на английском языке:</p>
58 <p>Поэтому использование повелительного наклонения соответствует общепринятым соглашениям Git. Вот несколько примеров заголовков на английском языке:</p>
59 <ul><li>Refactor subsystem X for readability</li>
59 <ul><li>Refactor subsystem X for readability</li>
60 <li>Update getting started documentation</li>
60 <li>Update getting started documentation</li>
61 <li>Remove deprecated methods</li>
61 <li>Remove deprecated methods</li>
62 <li>Release version 1.0.0</li>
62 <li>Release version 1.0.0</li>
63 </ul><p>Повелительное наклонение может казаться немного непривычным, так как в повседневной жизни мы чаще пользуемся изъявительным наклонением. При использовании изъявительного наклонения речь больше похожа на отчёт о произошедших событиях. Заголовки описаний в изъявительном наклонении выглядят так:</p>
63 </ul><p>Повелительное наклонение может казаться немного непривычным, так как в повседневной жизни мы чаще пользуемся изъявительным наклонением. При использовании изъявительного наклонения речь больше похожа на отчёт о произошедших событиях. Заголовки описаний в изъявительном наклонении выглядят так:</p>
64 <ul><li>Fixed bug with Y</li>
64 <ul><li>Fixed bug with Y</li>
65 <li>Changing behavior of X</li>
65 <li>Changing behavior of X</li>
66 </ul><p>Иногда заголовки просто описывают содержание коммитов:</p>
66 </ul><p>Иногда заголовки просто описывают содержание коммитов:</p>
67 <ul><li>More fixes for broken stuff</li>
67 <ul><li>More fixes for broken stuff</li>
68 <li>Sweet new API methods</li>
68 <li>Sweet new API methods</li>
69 </ul><p>Чтобы раз и навсегда разобраться с заголовками описаний коммитов, запомните правило: хороший заголовок всегда должен по смыслу подходить в качестве окончания такого предложения: "If applied, this commit will (ваш заголовок)". Вот несколько примеров:</p>
69 </ul><p>Чтобы раз и навсегда разобраться с заголовками описаний коммитов, запомните правило: хороший заголовок всегда должен по смыслу подходить в качестве окончания такого предложения: "If applied, this commit will (ваш заголовок)". Вот несколько примеров:</p>
70 <ul><li>If applied, this commit will <em>refactor subsystem X for readability</em></li>
70 <ul><li>If applied, this commit will <em>refactor subsystem X for readability</em></li>
71 <li>If applied, this commit will <em>update getting started documentation</em></li>
71 <li>If applied, this commit will <em>update getting started documentation</em></li>
72 <li>If applied, this commit will <em>remove deprecated methods</em></li>
72 <li>If applied, this commit will <em>remove deprecated methods</em></li>
73 <li>If applied, this commit will <em>release version 1.0.0</em></li>
73 <li>If applied, this commit will <em>release version 1.0.0</em></li>
74 <li>If applied, this commit will <em>merge pull request #123 from user/branch</em></li>
74 <li>If applied, this commit will <em>merge pull request #123 from user/branch</em></li>
75 </ul><p>Обратите внимание, если в заголовке не используется повелительное наклонение, он не подходит по смыслу в качестве окончания предложения:</p>
75 </ul><p>Обратите внимание, если в заголовке не используется повелительное наклонение, он не подходит по смыслу в качестве окончания предложения:</p>
76 <ul><li>If applied, this commit will <em>fixed bug with Y</em></li>
76 <ul><li>If applied, this commit will <em>fixed bug with Y</em></li>
77 <li>If applied, this commit will <em>changing behavior of X</em></li>
77 <li>If applied, this commit will <em>changing behavior of X</em></li>
78 <li>If applied, this commit will <em>more fixes for broken stuff</em></li>
78 <li>If applied, this commit will <em>more fixes for broken stuff</em></li>
79 <li>If applied, this commit will <em>sweet new API methods</em></li>
79 <li>If applied, this commit will <em>sweet new API methods</em></li>
80 </ul><p>Обязательно использовать повелительное наклонение нужно только в заголовке. В теле описания коммита его можно не использовать.</p>
80 </ul><p>Обязательно использовать повелительное наклонение нужно только в заголовке. В теле описания коммита его можно не использовать.</p>
81 <h3>Правило 6: ограничивайте длину строки в теле описания 72 символами</h3>
81 <h3>Правило 6: ограничивайте длину строки в теле описания 72 символами</h3>
82 <p>Git не переносит текст автоматически. Помните об этом и переносите строки вручную.</p>
82 <p>Git не переносит текст автоматически. Помните об этом и переносите строки вручную.</p>
83 <p>Рекомендуется ограничивать длину строки 72 символами. Это позволит Git оставить в тексте нужные отступы и уложиться в предельную длину строки 80 символов.</p>
83 <p>Рекомендуется ограничивать длину строки 72 символами. Это позволит Git оставить в тексте нужные отступы и уложиться в предельную длину строки 80 символов.</p>
84 <p>Соблюдать это правило поможет хороший текстовый редактор. Можно легко настроить<a>Vim</a>или другой редактор, чтобы он переносил строки, когда их длина достигает 72 символов.</p>
84 <p>Соблюдать это правило поможет хороший текстовый редактор. Можно легко настроить<a>Vim</a>или другой редактор, чтобы он переносил строки, когда их длина достигает 72 символов.</p>
85 <h3>Правило 7: в теле описания отвечайте на вопросы "что?" и "почему?", а не "как?"</h3>
85 <h3>Правило 7: в теле описания отвечайте на вопросы "что?" и "почему?", а не "как?"</h3>
86 <p>Пример описания ниже отлично показывает, как правильно объяснять, что и почему изменилось.</p>
86 <p>Пример описания ниже отлично показывает, как правильно объяснять, что и почему изменилось.</p>
87 <p>Взгляните на<a>изменения</a>и заметьте, сколько времени автор коммита сэкономил другим разработчикам с помощью описания. Он раскрыл контекст изменений, который наверняка потерялся бы без хорошего описания коммита.</p>
87 <p>Взгляните на<a>изменения</a>и заметьте, сколько времени автор коммита сэкономил другим разработчикам с помощью описания. Он раскрыл контекст изменений, который наверняка потерялся бы без хорошего описания коммита.</p>
88 <p>Обычно можно не писать, как именно сделаны изменения. Если код настолько сложный, что требует дополнительных пояснений, их можно сделать в комментариях. Сфокусируйтесь на объяснении причин изменений - на том, как всё работало до изменений и что здесь было не так, и на том, как оно работает сейчас.</p>
88 <p>Обычно можно не писать, как именно сделаны изменения. Если код настолько сложный, что требует дополнительных пояснений, их можно сделать в комментариях. Сфокусируйтесь на объяснении причин изменений - на том, как всё работало до изменений и что здесь было не так, и на том, как оно работает сейчас.</p>
89 <p>В будущем другие мейнтенеры поблагодарят вас за это, и, возможно, одним из них будете вы!</p>
89 <p>В будущем другие мейнтенеры поблагодарят вас за это, и, возможно, одним из них будете вы!</p>
90 <h2>Вместо заключения: полезные советы</h2>
90 <h2>Вместо заключения: полезные советы</h2>
91 <h3>Полюбите командную строку, используйте её вместо IDE</h3>
91 <h3>Полюбите командную строку, используйте её вместо IDE</h3>
92 <p>Используйте командную строку - на то есть столько же причин, сколько команд в Git. Командная строка - очень мощный инструмент, как и IDE, но они хороши каждый по-своему. Когда нужно использовать Git на полную катушку, командная строка вне конкуренции.</p>
92 <p>Используйте командную строку - на то есть столько же причин, сколько команд в Git. Командная строка - очень мощный инструмент, как и IDE, но они хороши каждый по-своему. Когда нужно использовать Git на полную катушку, командная строка вне конкуренции.</p>
93 <p>Помните об автодополнении, такая функция есть и в Bash, и в Zsh, и в Powershell. Автодополнение избавляет вас от необходимости запоминать полные команды.</p>
93 <p>Помните об автодополнении, такая функция есть и в Bash, и в Zsh, и в Powershell. Автодополнение избавляет вас от необходимости запоминать полные команды.</p>
94 <h3>Прочтите книгу Pro Git</h3>
94 <h3>Прочтите книгу Pro Git</h3>
95 <p>Её можно бесплатно скачать<a>по ссылке</a>.</p>
95 <p>Её можно бесплатно скачать<a>по ссылке</a>.</p>