Вступ до вирішення конфлікту злиття в GIT

Управління внесками для вирішення конфліктів між декількома розповсюдженими розробниками - одне з основних завдань систем управління версіями. Щоб вирішити конфлікти злиття, спочатку потрібно зрозуміти, що це саме. Він виникає під час об'єднання різних версій одного і того ж коду та керується системою контролю версій, переважно, коли розробник видаляє файл, коли якийсь інший розробник все ще модифікував його, або коли кілька людей намагаються змінити один і той же рядок у файлі. У цій статті ми дізнаємось більше про конфлікти злиття Git, що викликає це та як його можна вирішити.

Що таке конфлікт злиття в GIT?

Git зробив об'єднання дуже простим, оскільки він автоматично інтегрує нові зміни за допомогою команди git merge. Але у випадку конфліктів конфлікт знає лише той, хто зливається, а інші - не знають. Отже, що робить Git, це зупиняє процес злиття та позначає файл таким, що має конфлікти. Потім розробник знаходить і вирішує конфлікт. Конфлікти під час злиття можуть відбуватися описаними нижче способами:

  • Неможливо розпочати злиття

У разі очікування змін у робочому каталозі поточного проекту злиття може бути невдалим, оскільки вони можуть бути перезаписані комітетами під час об'єднання. Але його можна стабілізувати за допомогою різних команд git, таких як git checkout / stash / reset / commit.

  • Поломка під час об’єднання

Якщо під час злиття виникла помилка, це вказує на конфлікт між об'єднаною гілкою та поточною гілкою. Хоча Git намагається об'єднати файли без конфліктів, але якщо не в змозі зробити це, вам це доведеться вирішити вручну.

Як створити конфлікт об’єднання файлів?

Візьмемо приклад, щоб показати / вирішити конфлікт злиття в GIT за допомогою інтерфейсу командного рядка Git.

$ mkdir git-merge-test
$ cd git-merge-test
$ git init
$ echo "Mess with this content" > new_merged.txt
$ git add new_merged.txt
$ git commit -am"Committed the earlier content"
(master (root-commit) d58f73b) Committed the earlier content
1 file changed, 1 insertion(+)
create mode 200548 new_merged.txt

Давайте подивимося по черзі, що відбувається у наведеному вище фрагменті команд.

  • git-merge-test створює новий каталог та ініціалізує нове сховище Git.
  • Далі створіть текстовий файл з назвою new_merged.txt з чимось написаним на ньому.
  • Додайте щойно зроблений текст до репо, а потім скопіюйте його.

Тепер у нас є новий сховище з однією основною гілкою та файлом new_merged.txt з деяким вмістом у ньому. Тоді ми створюємо ще одну гілку, яка буде конфліктувати зі злиттям.

$ git checkout -b newbranch
$ echo "New content" > new_merged.txt
$ git commit -am"Same named file is edited to cause a conflict"
(newbranch 6282319) Same named file is edited to cause a conflict
1 file changed, 1 insertion(+), 1 deletion(-)

Щоб розділити це на вас, наведені вище рядки:

  • створює та перевіряє нову галузь з назвою newbranch.
  • перезаписує вміст файлу new_merged.txt.
  • і, нарешті, здійснює створення щойно створеного вмісту.

З новою гілкою, названою однією гілкою, створюється комітка, яка перезаписує вміст у new_merged.txt

$ git checkout master
Switched to branch 'master'
$ echo "Append" >> new_merged.txt
$ git commit -am"Content appended new_merged.txt"
(master 24fbe3c) Content appended new_merged.txt
1 file changed, 1 insertion(+)

Вищевказана послідовність команд не тільки перевіряє головну гілку, додає вміст до new_merged.txt, але і в кінці фіксує його. Зараз у нашому прикладі є 2 нові коміти. Один у головній галузі, а ще один у новому відділенні. Тепер git об'єднайте нову гілку, щоб побачити, що відбувається!

$ git merge newbranch
Auto-merging new_merged.txt
CONFLICT (content): Merge conflict in new_merged.txt
Automatic merge failed; fix conflicts and then commit the result.

Гіт показує нам, що виник конфлікт.

Вирішення конфліктів злиття в GIT

Редагування конфліктованого файлу - один із способів усунення конфлікту злиття. Просто відкрийте конфліктований файл у редакторі та видаліть роздільники конфліктів по одному. Після редагування ви можете використовувати git add для додавання зміненого вмісту. Новий комітет можна створити, виконавши:

git commit -m "merged and resolved the conflict in "

Git забезпечує вирішення конфлікту і тим самим створює нове вчинене злиття для його завершення. Деякі команди Git, які допомагають вирішити конфлікти злиття:

git log --merge

Команда merge –abort, передана командою git log, створює список комітетів, що конфліктують між гілками злиття.

git status

Це допомагає виявити конфліктуючі файли.

git diff

Це допомагає знаходити відмінності між станами сховища або файлу. Він використовується для прогнозування та запобігання конфліктів злиття. Деякі інструменти, як наведені нижче, використовуються при запуску помилки злиття.

git reset --mixed

Він використовується для скасування змін, внесених до поточного каталогу.

git checkout

Він використовується для скасування змін у файлах або частіше для зміни гілок. Деякі інструменти, як наведені нижче, використовуються, коли виникають конфлікти під час злиття.

git reset

Він використовується для скидання конфліктних файлів під час конфлікту злиття.

git merge --abort

Аргумент передачі –abort з git merge дозволяє вийти з процесу злиття та повернути гілку у початковий стан.

Переваги вирішення конфліктів злиття Git

  • Він використовується для створення, зміни, видалення гілок, файлів або сховищ без конфліктів.
  • Його можна використовувати для об'єднання різних версій коду.
  • Він також допомагає вносити зміни до віддалених гілок та отримувати їх, одночасно уникаючи конфліктів.
  • Це допомагає керувати випусками та обробляти їх без конфліктів.
  • Підтримує сховище та процес чистим та читабельним.

Висновок

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

Рекомендовані статті

Це посібник для вирішення конфлікту злиття в GIT. Тут ми обговорюємо, як ефективно вирішувати Git Merge Conflicts за допомогою різних команд разом із його перевагами. Ви також можете ознайомитися з іншими запропонованими нами статтями, щоб дізнатися більше -

  1. Git Альтернативи з перевагами
  2. Вступ до інструментів Git
  3. GitHub vs SVN - найкращі відмінності
  4. Топ 11 запитань щодо інтерв'ю GIT
  5. Git Push
  6. Версії Tableau
  7. Повне керівництво по віддаленій команді Git
  8. Три етапи життєвого циклу Git із робочим процесом

Категорія: