На той момент я готовий об'єднати свою гілку назад у розвиток (акцент мій)
Поводження з конфліктами в git merge
Росії часто простіше, ніж в Росії git rebase
. У Git merge ви можете побачити весь список файлів, які були змінені одразу. Незалежно від того, скільки комісій було зроблено іншими колегами, вам доведеться один раз злитися . З робочим процесом ребазування у вас можуть виникати однакові конфлікти знову і знову, і вам доведеться їх переглядати вручну. Ви можете закінчити фіксацію 13-ї комірки і відчуєте, що не можете побачити світло з тунелю .
За моїм досвідом, коли я намагався наївно розв'язати повторні конфлікти відновлення, я втратив чиїсь модифікації або додаток, який навіть не компілювався. Часто я і колеги робили багато роботи, але настільки переймалися складністю повторюваних конфліктів, що нам довелося перервати і втратити попередню роботу після декількох доручень.
Я запропоную вам кілька методів, але вони можуть лише допомогти злиття отримати легше, ніж автоматизувати завдання.
- Ресурсні / мовні файли . Якщо у вас є додаткові зміни до файлу ресурсу, переконайтеся, що ви завжди переміщуєте їх до кінця файлу, щоб ви могли легко згадати свої зміни проти інших змін. Можливо, ви зможете скопіювати та вставити зміни знизу або просто видалити маркери конфлікту
- До. Ні. АБСОЛЮТНО RE-формат . Ні ви, ні ваші колеги-розробники не повинні виконувати "масове переформатування коду" під час щоденної роботи. Переформатування коду додає надмірну кількість помилкових позитивних результатів в управлінні конфліктами. Переформатування коду можна зробити
- Поступово, наприклад, кожен розробник на кожній комісії, як тільки він використовує автоматизований інструмент (наприклад, у Eclipse є можливість переформатувати на збереження, у vanilla Visual Studio немає). Абсолютно кожен розробник повинен використовувати однакові стандарти форматування коду, закодовані у форматний файл, який їсть ваш IDE. Щоб дати вам уявлення, якщо це 4 пробіли або 2 вкладки, це не має значення, але це дійсно важливо, якщо всі використовують одне і те ж.
- Незадовго до звільнення керівник команди. Якщо "переформатування коду" відбувається, коли люди не працюють на галузях, тобто перед тим, як вони розгалужуються, все полегшиться
- Перегляньте поділ роботи між колегами. Ця частина є частиною, куди надходить більшість інженерій. Як вказують інші відповіді, це дизайн запаху, якщо кілька розробників, які виконують різні завдання, повинні торкатися одних і тих же ресурсів. Можливо, вам доведеться обговорити з вашим керівником команди про те, яку частину повинен змінювати кожен одночасно розробник.
Я також бачив деякі шкідливі звички в робочих процесах Git у своїх командах. Часто люди переборюють у своїх відділеннях. Я особисто був свідком розробника, який додав 10-20 комісій з позначкою "виправити", кожен з яких здійснював один або два рядки. Наша політика полягає в тому, що комісії мають маркування квитків JIRA, щоб дати вам уявлення.
@JacobRobbins пропонує зробити git rebase
щоденне завдання. Я хотів би просунути його підхід вперед.
По-перше, використовуйте rebase один раз просто, щоб зменшити кількість комісій до пригорщі. І базуйтесь лише на початковій гілці розробки, яка є зобов'язанням, від якого ви розгалужилися. Коли я скажу кілька, я можу мати на увазі 3 або 4 (наприклад, весь передній, весь задній, всі виправлення бази даних) або будь-яку розумну цифру. Після того як ви їх об'єднали, використовуйте fetch
та працюйте зі своєю базою даних над гілкою вище. Це не позбавить вас від конфліктів, якщо ваша команда не перегляне власний підхід, але зробить ваше життя менш болючим.
Якщо у вас є додаткові запитання щодо конкретних завдань, сміливо шукайте і запитайте на Stackoverflow.
[Редагувати] про правило без переформатування та хлопця-розвідника. Я трохи переформулював RE-формат, щоб підкреслити, що я маю на увазі завдання форматування з нуля всього вихідного файлу, включаючи код, який ви не торкалися. На противагу завжди форматуванню власного коду, який ідеально підходить для хлопців, ряд розробників, в тому числі і я, використовуються для переформатування всього файлу за допомогою можливостей IDE. Коли файл торкнеться інших, навіть якщо зачіпані рядки не змінені у своєму змісті та семантиці, Git сприйме це як конфлікт. Лише дуже потужний мовний редактор може припустити, що конфлікт пов'язаний лише з форматуванням та автоматичним злиттям найкращого форматованого фрагмента. Але я не маю доказів такого інструменту.
Зрештою, правило хлопчиків-розвідників не наказує вам чистити чужий безлад. Просто твій.