Как лучшие методы работы Git сэкономили мне часы переработки

1656515053 kak luchshie metody raboty git sekonomili mne chasy pererabotki

автора Хемаля Пателя

Недавно я работал над задачей обновить сертификат для NodeJS. В последний раз это затрагивало два года назад для улучшения функций. Любой жить Проблема, поднятая в этой программе, требует немедленного внимания, хотя программа использовалась только внутренне.

Приложение старое. Модули Core-NodeJS-Infra не обновлялись более двух лет. Дальнейшие услуги устарели. Изменен способ, которым мы называем нисходящие услуги. Краткий термин – это вишня на торте. Я знал, что это будут американские горки.

Я потратил три дня на запуск программы.

Инфрамодули обновляются? Проверьте.

Дальнейшие службы работают нормально? Проверьте.

Потоки пользовательского интерфейса работают нормально? Проверьте.

Один из членов нашей команды затронул программу для обновления более года назад. Он отметил, что репо, откуда я сделал форк, само по себе было раздвоенным репо. Какая-то другая команда работала над этим репо, а затем наша команда работала над начальным репо с этого момента, но член моей команды не знает, с какого момента. Это был небольшой беспорядок!

У нас есть инструмент «Собственность», показывающий правильное репо, и он «лгал» мне. Итак, ситуация была такой:

1*vWPKaIKu8tCtgYQyo-Ejsw
Форкцепция

Да, это был Forkception! WTF и FML были первыми двумя мыслями, вышедшими из моих уст. я след работали над реальным репо, но, вместо этогоя работал над вилкой, которая была несвежей. Как я глуп!

Первое мнение – мои три дня работы прошли зря, и мне нужно начинать все заново.

Вторая мысль? Позвольте спросить моего старого друга Git? Он мне очень давно помогает.

1*fbmqZte8Tx-KfrZlkw4q4g

я – «Эй, Гит? У меня серьезные проблемы и мне нужна ваша помощь, чтобы решить эту проблему».

Git – «Эй! Ладно, мы должны начать с того, что есть в прямом эфире. Создайте новую ветку под названием обновление, и укажите эту ветвь на живой код. Вы можете использовать для этого git hard reset».

я — «Хорошо, я буду.»

Сейчас ситуация выглядит следующим образом.

1*GRnnYUHYrJU3CF5V-miFUg
Использование функций Git

Git — Нам нужно знать, что изменилось между разработкой и обновлением. Можете ли вы перечислить файлы, которые отличаются между вашими обновление и развивать? Проверьте эти файлы отдельно и выясните, какие изменения были».

я – «Круто. Я вижу три вида перемен. Есть служба S1, которую мне нужно вызвать другим способом. Существует служба S2, которую мне необходимо вызвать с помощью другой конечной точки. Существует служба S3, которую мне нужно вызвать, используя разные параметры. Я тоже вижу package.json файл в обновление филиал имеет некоторые пакеты, которые уже обновлены. Поэтому нужно изменить всего несколько пакетов».

Git — «Отлично, что вы разделили изменения. Теперь покажи мне свой журнал Git развивать филиал. Надеюсь, вы придерживались некоторых базовых практик Git, например, в каждом комите всегда был создан код. Сообщение о фиксации должно отображать то, что вы изменили».

1*hH5gt56WcMwTKl_iF50Uuw
Git войти в ветвь разработки

я — «Да, у меня всего четыре комита развивать филиал. Одно обязательство заключалось в том, чтобы сделать проект пригодным для создания. Есть один для каждого из трех звонков службы. ”

Git – «Идеально! Похоже, вы должным образом придерживались лучших практик. Начнём со стабилизации сборки проекта, сделав package.json актуальным. Выезд в обновление разветвляется и создается дубликат package.json – package-copy.json. Теперь, используя Git replace , upgrade/package.json из develop/package.json и запустите diff между package.json и package-copy.json. Поскольку в реальном коде некоторые пакеты уже изменены и имеют разные версии, вам нужно будет обновить, посмотрев diff».

1*rFVh4Jf6JCpLgBDj9Qj_6g
Сделать проект пригодным для постройки

я – «Позвольте мне попробовать. Ладно, он строится и работает».

Git — «Прекрасно! Теперь поработаем над вызовами службы. Я вижу, что у вас есть одна фиксация для каждой смены вызова службы в ветке разработки. Пора собирать вишню. Выберите от менее сложного вызова до самого сложного. Выбирайте, объединяйте и разрешайте конфликты. Обязательно проверьте, находится ли проект в подходящем для строительства состоянии после каждая вишня и раньше каждого обращения».

я – «S1 выполнен. S2 выполнено. S3 выполнено. Спасибо, Гит”

Git — «Добро пожаловать. Но именно вы помогли себе, придерживаясь методов фиксации Git, а не рассматривая Git как просто хранилище кода».

Что я здесь сделал? ?

Сделайте паузу на мгновение и подумайте, следует ли вносить это изменение в этот комит. Комит, который говорит, что «смена: конечные точки service-s1» и имеет изменения service-s2, просто создаст путаницу.

Не делайте наполовину проделанную работу

Мы часто слышали мантру «совершай рано, делай часто». В приведенном выше примере вы можете иметь одну фиксацию для разных конечных точек одной службы. Это называется Изготовление колбасы.

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

Проверьте свой код, прежде чем произвести фиксацию

Мы должны думать о Git как о конечном автомате, и любая машина должна быть в состоянии для сборки в любом состоянии.

Пишите хорошие сообщения

Это самая важная часть. Я всегда делаю паузу на мгновение и думаю, смогу ли я понять – через три месяца – тип изменений в этом комитете, просто посмотрев на сообщение о фиксации.

Вывод

Мне удалось быстро решить беспорядок. Я мог выйти из этого момента WTF и FML только потому, что придерживался некоторых хороших практик. Они существуют неспроста и похожи на соль в пище – вы осознаете их ценность только тогда, когда их не употребляете.

Ошибки случаются рано или поздно, безотчетно. Но убедитесь, что вы сознательно придерживаетесь некоторых практик вокруг Git.

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

Это помогает убедиться, что после каждого комита ваш проект может быть создан, что действительно полезно.

VSCode имеет плохую поддержку Git. Увидеть конфликты и разрешить их становится очень легко, иногда лишь одним щелчком мыши. Смотрите пример ниже?

1*BtLN8xTuTbJgXkJMPD7GgA

Ссылки

Особая благодарность моим друзьям Саурабх Раджани и Аниш Дхаргалкар помог мне с уточнением содержимого.

Добавить комментарий

Ваш адрес email не будет опубликован.