Úvod do riešenia konfliktov zlúčení v GIT

Spravovanie príspevkov na riešenie konfliktov medzi viacerými distribuovanými vývojármi je jednou z hlavných úloh systémov na správu verzií. Ak chceme vyriešiť zlúčené konflikty, musíme najskôr pochopiť, o čo presne ide. Vzniká pri zlučovaní rôznych verzií toho istého kódu a je riadený systémom riadenia verzií, väčšinou vtedy, keď vývojár odstráni súbor, zatiaľ čo iný vývojár ho stále upravoval, alebo keď sa viacerí ľudia pokúsia zmeniť rovnaký riadok v súbore. V tomto článku sa dozvieme viac o konfliktoch Gitovho zlúčenia, o tom, čo ich spôsobuje a ako je možné ich vyriešiť.

Čo je zlúčenie konfliktov v GIT?

Git zlučovanie veľmi uľahčil, pretože automaticky integruje nové zmeny pomocou príkazu git merge. Ale v prípade konfliktov o konflikte vie iba vývojár, ktorý sa zlučuje, zatiaľ čo ostatní o tom nevedia. Čo robí Git, je, že zastaví proces zlúčenia a označí súbor ako konfliktný. Vývojár potom nájde a vyrieši konflikt. Konflikty počas zlúčenia sa môžu vyskytnúť nižšie opísanými spôsobmi:

  • Zlyhanie pri začatí zlúčenia

V prípade čakajúcich zmien v pracovnom adresári aktuálneho projektu môže zlúčenie zlyhať, pretože ich môžu počas fúzie prepísať. Môže sa však stabilizovať pomocou rôznych príkazov git, ako je git checkout / stash / reset / commit.

  • Porucha počas zlúčenia

Ak dôjde k zlyhaniu počas zlučovania, znamená to, že existuje konflikt medzi vetvou, ktorá sa spája, a súčasnou vetvou. Aj keď sa Git pokúša spojiť súbory bez konfliktov, ale ak to nedokáže, ponechá na vás, aby ste ich manuálne vyriešili.

Ako vytvoriť konflikt zlúčenia súborov?

Vezmime príklad, pomocou ktorého ukážeme / vyriešime zlúčenie konfliktu v GIT pomocou rozhrania príkazového riadka 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

Pozrime sa, čo sa deje vo vyššie uvedenom úryvku príkazov.

  • git-merge-test vytvorí nový adresár a inicializuje nové úložisko Git.
  • Potom vytvorte textový súbor s názvom new_merged.txt, do ktorého bude niečo napísané.
  • Pridajte novo vyrobený text do repo a potom ho potvrďte.

Teraz máme nové úložisko s jednou hlavnou vetvou a súbor new_merged.txt s nejakým obsahom. Potom vytvoríme ďalšiu vetvu, ktorá bude v rozpore s zlúčením.

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

Vyššie uvedené riadky:

  • vytvorí a odhlási novú skupinu s názvom newbranch.
  • prepíše obsah súboru new_merged.txt.
  • a nakoniec odovzdá novovytvorený obsah.

S newbranch s názvom jedna vetva sa vytvorí odovzdanie, ktoré prepíše obsah v 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(+)

Vyššie uvedená postupnosť príkazov nielen kontroluje hlavnú vetvu, pridáva obsah do súboru new_merged.txt, ale nakoniec ju tiež potvrdzuje. Náš príklad má teraz 2 nové záväzky. Jeden je v hlavnej vetve a jeden je v novej pobočke. Teraz git zlúčiť Newbranch vidieť, čo sa stane!

$ 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 nám ukazuje, že sa objavil konflikt.

Riešenie konfliktov zlúčenia v GIT

Úprava konfliktného súboru je jedným zo spôsobov odstránenia zlúčeného konfliktu. Jednoducho otvorte konfliktný súbor v editore a postupne oddeľujte deliče konfliktov. Po úprave môžete použiť git add na pridanie upraveného obsahu. Nový záväzok je možné vytvoriť vykonaním:

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

Git zaisťuje vyriešenie konfliktu, a tak vytvára novú angažovanú fúziu na jeho dokončenie. Niektoré z príkazov Git, ktoré pomáhajú riešiť zlučovacie konflikty, sú:

git log --merge

Príkaz zlučovania - odovzdaný s príkazom git log vytvorí zoznam potvrdení, ktoré sú v rozpore medzi zlučovanými vetvami.

git status

Pomáha identifikovať konfliktné súbory.

git diff

Pomáha pri hľadaní rozdielov medzi stavmi archívu alebo súboru. Používa sa na predpovedanie a predchádzanie zlúčeniu konfliktov. Niektoré nástroje, ako sú uvedené nižšie, sa používajú pri začatí zlyhania zlúčenia.

git reset --mixed

Používa sa na vrátenie zmien vykonaných v aktuálnom adresári.

git checkout

Používa sa na vrátenie zmien do súborov alebo častejšie na zmenu vetiev. Niektoré nástroje, ako sú uvedené nižšie, sa používajú, keď počas zlúčenia dôjde ku konfliktom.

git reset

Používa sa na resetovanie konfliktných súborov počas zlúčenia konfliktu.

git merge --abort

Argument odovzdanie - skratka s zlúčením git umožňuje človeku ukončiť proces zlúčenia a vrátiť vetvu do pôvodného stavu.

Výhody riešenia konfliktov Git Merge

  • Používa sa na vytváranie, úpravu, mazanie vetiev, súborov alebo archívov bez konfliktov.
  • Môže sa použiť na zlúčenie rôznych verzií kódu.
  • Pomáha tiež vykonávať zmeny a pokladať vzdialené pobočky a súčasne predchádzať konfliktom.
  • Pomáha spravovať a spracovávať vydania bez konfliktov.
  • Udržuje úložisko a proces čistý a čitateľný.

záver

Git má mnoho použití a je široko používaný vývojármi, produktovými manažérmi a dátovými vedcami. Príkazy Git sú veľmi efektívne a môžu byť veľmi užitočné. Konflikt v gite vzniká, keď sa dve rôzne vetvy pokúsia upraviť rovnaký riadok v súbore alebo sa súbor v určitej vetve odstráni, ale v inom sa upraví. Git zvláda väčšinu zlúčení úspešne pomocou svojich zlučovacích funkcií, ale dá sa vyriešiť aj ručne pomocou nástrojov, ako sú stav git, reset gitu, pokladnica git a protokol Git.

Odporúčané články

Toto je príručka na vyriešenie konfliktu zlúčení v GIT. Tu diskutujeme o tom, ako efektívne vyriešiť konflikty Git Merge Conflicts pomocou rôznych príkazov a ich výhod. Viac informácií nájdete aj v ďalších navrhovaných článkoch -

  1. Poskytnite výhody s výhodami
  2. Úvod do Git Tools
  3. GitHub vs SVN - najväčšie rozdiely
  4. Top 11 otázok GIT Interview
  5. Git Push
  6. Verzia Tableau
  7. Kompletný sprievodca vzdialeným príkazom Git
  8. Tri fázy životného cyklu Gitu s pracovným postupom

Kategórie: