02 авг 2022 · 10:05    
{"document": [{"text": [{"type": "string", "attributes": {}, "string": "Фиксация изменений - это одна из самых распространенных вещей, которую делают многие разработчики, когда вносят какие-либо изменения в код. Вы это делаете, чтобы изменения можно было отследить "}, {"type": "string", "attributes": {"href": "https://git-scm.com/book/ru/v2/%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B-Git-%D0%9F%D1%80%D0%BE%D1%81%D0%BC%D0%BE%D1%82%D1%80-%D0%B8%D1%81%D1%82%D0%BE%D1%80%D0%B8%D0%B8-%D0%BA%D0%BE%D0%BC%D0%BC%D0%B8%D1%82%D0%BE%D0%B2"}, "string": "в истории"}, {"type": "string", "attributes": {}, "string": ". Но как насчет каких-либо правил написания коммитов? Есть ли разница между грязным коммитом и чистым? Использование эмодзи для заголовка сообщения об изменениях? В этой статье мы поговорим о некоторых общих соглашениях и лучших практиках "}, {"type": "string", "attributes": {"bold": true}, "string": "git commit"}, {"type": "string", "attributes": {}, "string": " для того, чтобы сделать идеальный коммит."}], "attributes": []}, {"text": [{"type": "attachment", "attributes": {"presentation": "gallery"}, "attachment": {"caption": "", "contentType": "image/jpeg", "filename": "ezgif.com-gif-maker.jpg", "filesize": 48617, "height": 323, "pic_id": 113591, "url": "https://storage.yandexcloud.net/pabliko.files/article_cloud_image/2022/08/01/ezgif.com-gif-maker_S9e25CI.jpeg", "width": 600}}, {"type": "string", "attributes": {}, "string": "1. Подготовительная фаза"}, {"type": "string", "attributes": {"blockBreak": true}, "string": ""}], "attributes": ["heading1"]}, {"text": [{"type": "string", "attributes": {}, "string": "Рассматривайте свои изменения как программист. Прежде чем вы зафиксируете свои изменения, ваши изменения должны что-то делать. Если они работают хорошо, они будут пригодны для документирования, в противном случае их стоит переделать. Поэтому не имеет смысла, если ваши изменения не работают, но вы их коммитите."}], "attributes": []}, {"text": [{"type": "string", "attributes": {"bold": true}, "string": "1. 1. Когда и что ставить"}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Вы должны убедиться, что между изменениями, которые вы вносите в строки, есть связь. Если вы можете описать изменения в нескольких словах, чтобы следующий разработчик мог легко понять, что вы сделали, основываясь на вашем сообщении о фиксации, то все в порядке. Даже если вы можете сделать несколько строк сообщений для ваших коммитов, никогда не объединяйте изменения вместе."}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "2. Фаза фиксации"}], "attributes": ["heading1"]}, {"text": [{"type": "string", "attributes": {}, "string": "Нет никакой проблемы, если в истории вашего проекта сотни коммитов. Git фактически хранит манифест файлов, которые есть в вашем проекте, так что у вас не закончится место и ресурсы, поэтому не стесняйтесь делать коммиты, когда это необходимо."}], "attributes": []}, {"text": [{"type": "string", "attributes": {"bold": true}, "string": "2. 1. Что фиксировать"}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Git - это система контроля версий, основанная на строках, что означает, что она отслеживает строки, которые были изменены, а не фактическую фразу или слово. Если вы измените один символ в строке, будет отслеживаться эта строка, а не слово. Как мы узнали ранее, убедитесь, что строки, которые вы изменили, связаны друг с другом, так как они работают вместе, чтобы выполнять определённую функцию или служить чему-то."}], "attributes": []}, {"text": [{"type": "string", "attributes": {"bold": true}, "string": "2. 2. Как объединять hunks в коммитах"}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Вы можете изменить несколько файлов в некоторых блоках и добавить эти блоки из любого файла, а затем скомпоновать их и подготовить к коммиту. Рассмотрим веб-проект, в котором есть несколько CSS и JS файлов. Представьте, что вы добавили несколько абзацев в файл index и теперь придаете им стиль в файле CSS. Тем временем вы создаете функцию в JS-файле для контактной формы в вашем шаблоне. Просто используйте команду "}, {"type": "string", "attributes": {"bold": true}, "string": "git add --patch"}, {"type": "string", "attributes": {}, "string": " для установки этих конкретных блоков, ответив на несколько вопросов."}], "attributes": []}, {"text": [{"type": "string", "attributes": {"bold": true}, "string": "2. 3. Сообщения о коммитах"}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Сommit Message - это место, где вы обращаетесь к следующему контрибьютору, который собирается внести свой вклад в ту же самую строку (строки) за один раз. Пусть они получат удовольствие, когда прочитают ваше сообщение. По сути, когда вы хотите зафиксировать поэтапные изменения, вам нужно поместить на них сообщение. Каждое сообщение о фиксации имеет заголовок, описание и некоторые метаданные. Разработчику необходимо заполнить заголовок. Однако заполнение описания является необязательной задачей. Лучше всего, если оно будет коротким и понятным, чтобы другие разработчики могли понять ваши изменения, прочитав заголовок коммита."}], "attributes": []}, {"text": [{"type": "string", "attributes": {"bold": true}, "string": "2. 4. Управление проблемами с помощью специальных ключевых слов в Commit Message"}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Некоторые платформы, использующие Git в качестве контроллера репозитория, такие как github, пошли дальше и имеют специальные функции в сообщениях Git. Например, если вы используете ключевые слова "}, {"type": "string", "attributes": {"bold": true}, "string": "Close"}, {"type": "string", "attributes": {}, "string": ", "}, {"type": "string", "attributes": {"bold": true}, "string": "Closes"}, {"type": "string", "attributes": {}, "string": ", "}, {"type": "string", "attributes": {"bold": true}, "string": "Closed"}, {"type": "string", "attributes": {}, "string": ", "}, {"type": "string", "attributes": {"bold": true}, "string": "Fix "}, {"type": "string", "attributes": {}, "string": "и т. д. перед тегом проблемы, то как только ваш "}, {"type": "string", "attributes": {"bold": true}, "string": "HEAD "}, {"type": "string", "attributes": {}, "string": "будет равен этому коммиту, упомянутая проблема будет закрыта. При этом вы можете просто закрывать проблемы в заголовке сообщения коммита. Подробнее об этой возможности "}, {"type": "string", "attributes": {"href": "https://docs.devart.com/studio-for-sql-server/source-controlling-databases/associating-commits-with-github-issues.html"}, "string": "читайте на GitHub"}, {"type": "string", "attributes": {}, "string": "."}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "$ git commit -m 'deprecation fixed Closes #215'"}], "attributes": ["quote"]}, {"text": [{"type": "string", "attributes": {"bold": true}, "string": "2. 5. Не используйте эмодзи"}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Наша редакция видела, что некоторые репозитории имеют свои собственные соглашения в случае создания сообщений о фиксации. Они используют эмодзи, чтобы показать статус коммита, будь то исправление, тест или любой другой вид коммита."}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Многие разработчики избегают использования эмодзи в своих сообщениях о фиксации. У вас могут быть участники с разных платформ и интерфейсов. Поскольку эмодзи используют специальные коды ASCII (не часто используемые и не поддерживаемые в текстовых интерфейсах, таких как CLI) и системы Unicode, а большинство интерфейсов командной строки нуждаются в сторонних пакетах или шрифтах для работы с ними, это соглашение может не всем понравиться. Они могут столкнуться с некоторыми проблемами в плане чтения историй и проверки сообщений о фиксации. (Например, символ эмодзи в заголовке сообщения может отображаться как его реальный ASCII-код или неизвестные вопросительные знаки)."}], "attributes": []}, {"text": [{"type": "attachment", "attributes": {"presentation": "gallery"}, "attachment": {"caption": "", "contentType": "image/jpeg", "filename": "ezgif.com-gif-maker (1).jpg", "filesize": 41880, "height": 308, "pic_id": 113592, "url": "https://storage.yandexcloud.net/pabliko.files/article_cloud_image/2022/08/01/ezgif.com-gif-maker_1_vleZqwZ.jpeg", "width": 346}}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "В этом случае лучше всего использовать префиксный шаблон, чтобы показать категорию фиксации как слово в скобке в начале файла. На следующем изображении, кстати, используется формат "}, {"type": "string", "attributes": {"bold": true}, "string": "type: message"}, {"type": "string", "attributes": {}, "string": "."}], "attributes": []}, {"text": [{"type": "attachment", "attributes": {"presentation": "gallery"}, "attachment": {"caption": "", "contentType": "image/jpeg", "filename": "ezgif.com-gif-maker (2).jpg", "filesize": 93412, "height": 420, "pic_id": 113593, "url": "https://storage.yandexcloud.net/pabliko.files/article_cloud_image/2022/08/01/ezgif.com-gif-maker_2_Ua28fJX.jpeg", "width": 1000}}], "attributes": []}, {"text": [{"type": "string", "attributes": {"bold": true}, "string": "2. 6. Описание сообщения"}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Если вы сохраните свои изменения и откроете текстовый редактор после фиксации изменений для отправки сообщения, вы можете добавить дополнительную информацию о самом коммите, например, о требованиях, ошибках, «что сделать» (возможно) и так далее. Раздел заголовка по-прежнему является самой важной частью сообщения о фиксации. Несмотря на то, что раздел описания является необязательным, не стесняйтесь их делать для своих коммитов. Если ваши изменения довольно сложны и требуют дополнительных объяснений, вы можете написать больше о различных аспектах ваших изменений в разделе описания."}], "attributes": []}, {"text": [{"type": "attachment", "attributes": {"presentation": "gallery"}, "attachment": {"caption": "", "contentType": "image/jpeg", "filename": "ezgif.com-gif-maker (3).jpg", "filesize": 60536, "height": 382, "pic_id": 113595, "url": "https://storage.yandexcloud.net/pabliko.files/article_cloud_image/2022/08/01/ezgif.com-gif-maker_3_yW7xXRC.jpeg", "width": 723}}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Наконец, мы можем просто сказать, что если вы будете делать свои коммиты простыми и короткими, так же как и ваши сообщения о коммитах, вы почти попадете в цель."}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "3. Различные соглашения Git"}], "attributes": ["heading1"]}, {"text": [{"type": "string", "attributes": {}, "string": "Git вообще не создает соглашений - они разрабатываются компаниями и командами. Одна команда может найти эмодзи очень полезными в своей платформе, но другая хочет сохранить простоту. Одна команда может писать непосредственно в "}, {"type": "string", "attributes": {"bold": true}, "string": "Main "}, {"type": "string", "attributes": {}, "string": "ветку (также известная как single-branch convention), но у другой команды есть ветка "}, {"type": "string", "attributes": {"bold": true}, "string": "development"}, {"type": "string", "attributes": {}, "string": ", и она пишет в "}, {"type": "string", "attributes": {"bold": true}, "string": "Main "}, {"type": "string", "attributes": {}, "string": "ветку только релизные #"}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "коммиты. Если вы работаете в месте, где их соглашения могут показаться для вас не очень хорошими, вам лучше следовать им. Время, которое вы потратите на то, чтобы переубедить их, возможно, поможет вам исправить некоторые ошибки."}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Заключение"}], "attributes": ["heading1"]}, {"text": [{"type": "string", "attributes": {}, "string": "В этой статье мы познакомились с некоторыми основными соглашениями и лучшими практиками "}, {"type": "string", "attributes": {"bold": true}, "string": "git commit"}, {"type": "string", "attributes": {}, "string": ". Мы поговорили о плюсах и минусах каждой практики и, наконец, выяснили, что Git не несет ответственности за соглашения, они создаются компаниями и стартапами."}], "attributes": []}], "selectedRange": [5461, 5461]}
Комментарии 0