Увод у решавање сукоба спајања у ГИТ-у

Управљање доприносима за решавање сукоба између више дистрибуираних програмера један је од главних послова система за контролу верзија. Да бисмо решили сукобе спајања, прво морамо да схватимо шта је тачно. Настаје током спајања различитих верзија истог кода и њиме управља систем контроле верзија, углавном када програмер обрише датотеку док је неки други програмер још увек модификовао њу или када више људи покушава да промени исту линију у датотеци. У овом ћемо чланку сазнати више о сукобима у спајању Гит-а, шта га узрокује и на који начин се може разрешити.

Шта је спајање сукоба у ГИТ-у?

Гит је спајање учинио врло једноставним јер аутоматски интегрише нове промене помоћу гит наредбе спајања. Али у случају сукоба, само програмер који се спаја свјестан је сукоба, док остали нису свјесни. Дакле, оно што Гит чини јесте, зауставља процес спајања и означава датотеку као сукоб. Тада програмер проналази и решава сукоб. Сукоби током спајања могу се догодити на доље описане начине:

  • Неуспешно покретање спајања

У случају неисправних промена у радном именику текућег пројекта, спајање може да пропадне јер би их записи могли пребрисати током спајања. Али може се стабилизовати коришћењем различитих гит команди као што су гит цхецкоут / стасх / ресет / цоммит.

  • Неуспјех током спајања

Ако дође до квара током спајања, то указује да постоји сукоб између гране која се спаја и тренутне гране. Иако Гит покушава спојити датотеке без сукоба, али ако то не може учинити, на вама је да их ручно решите.

Како створити сукоб спајања датотека?

Узмимо пример за приказ / решавање сукоба спајања у ГИТ-у помоћу интерфејса Гит командне линије.

$ 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 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(-)

Да бисте то поделили вама, горњи редови:

  • креира и провјерава нову грану која се зове нова.
  • преписује садржај нове датотеке_мергед.ткт.
  • и коначно извршава новостворени садржај.

Са новом бранцхом названом једна грана, креира се одредница која преписује садржај у нев_мергед.ткт

$ 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(+)

Горњи низ наредби не само да провјерава матичну грану, додаје садржај у нев_мергед.ткт, већ га на крају и обавезује. Сада наш пример има 2 нова дела. Једна је у матичној бранши, а још једна у новој бранши. Сада гит спојите нову грану да бисте видели шта се дешава!

$ 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 commit -m "merged and resolved the conflict in "

Гит осигурава решавање сукоба и на тај начин ствара ново посвећено спајање ради његовог финализације. Неке од Гит команди које помажу у решавању сукоба спајања су:

git log --merge

Команда спајања - пребачена са гит лог наредбом ствара листу комитета у сукобу између грана које се спајају.

git status

Помаже у препознавању сукобљених датотека.

git diff

Помаже у проналажењу разлика између стања спремишта или датотеке. Користи се за предвиђање и спречавање сукоба спајања. Неки алати попут оних датих у наставку користе се приликом покретања неуспеха спајања.

git reset --mixed

Користи се за поништавање промена у тренутном директорију.

git checkout

Користи се за поништавање промена у датотекама или чешће за промену грана. Неки алати попут оних датих у наставку користе се када сукоби настају током спајања.

git reset

Користи се за ресетовање сукобљених датотека током сукоба спајања.

git merge --abort

Аргумент –арборт са гит спајањем омогућава излазак из процеса спајања и враћање гране у првобитно стање.

Предности решавања Гит Мерге Цонфлицтса

  • Користи се за креирање, модификацију, брисање грана, датотека или спремишта без сукоба.
  • Може се користити за спајање различитих верзија кода.
  • Такође помаже да се изврше промене и одјаве удаљене гране, истовремено избегавајући сукобе.
  • Помаже у управљању издањима и без руковања са њима.
  • Одржава спремиште и поступак чистим и читљивим.

Закључак

Гит има много користи и широко га користе програмери, менаџери производа и научници података. Гит команде су врло ефикасне и могу бити од велике користи. Сукоб у гиту настаје када две различите гране покушају да уреде исту линију у датотеци или ако се датотека обрише у одређеној грани, али је уређена у другој. Гит успешно рукује већином спајања са својим значајкама спајања, али се такође може решити ручно помоћу алата као што су статус гита, ресетовање гита, одјављивање гита и Гит лог.

Препоручени чланци

Ово је водич за решавање сукоба спајања у ГИТ-у. Овде смо расправљали о томе како ефикасно разрешити Гит Мерге Цонфлицтс различитим командама, заједно са његовим предностима. Можете и да прођете кроз друге наше предложене чланке да бисте сазнали више -

  1. Гит алтернативе са предностима
  2. Увод у Гит Тоолс
  3. ГитХуб вс СВН - Најбоље разлике
  4. Топ 11 питања о интервјуу ГИТ-у
  5. Гит Пусх
  6. Таблеау Версионс
  7. Комплетан водич за Гит даљинску команду
  8. Три фазе животног циклуса Гит са током рада

Категорија: