Uvod v reševanje sporov sporov v GIT

Upravljanje prispevkov za reševanje konfliktov med več razpršenimi razvijalci je eno glavnih opravil sistemov za nadzor različic. Da bi rešili konflikte združevanja, moramo najprej razumeti, kaj točno je. Nastane med združevanjem različnih različic iste kode, upravlja pa ga sistem za nadzor različic, večinoma, ko razvijalec datoteko izbriše, medtem ko jo je kak drug razvijalec še spreminjal ali kadar več ljudi poskuša spremeniti isto vrstico v datoteki. V tem članku bomo spoznali več o konfliktih Git spajanja, kaj ga povzroča in kako ga je mogoče razrešiti.

Kaj je združitev sporov v GIT?

Git je združitev zelo enostavno, saj samodejno vključi nove spremembe z ukazom git merge. Toda v primeru konfliktov je konflikt zaveden le razvijalec, ki se združuje, drugi pa se ne zavedajo. Torej, kar počne Git, zaustavi postopek združitve in označi datoteko kot konflikte. Nato razvijalec konflikt najde in razreši. Konflikti med združitvijo se lahko zgodijo na spodaj opisane načine:

  • Neuspeh pri zagonu združitve

V primeru čakajočih sprememb v delovnem imeniku trenutnega projekta združevanje ne bo uspelo, saj bi jih lahko prepisali obrezi med združevanjem. Stabilizirati pa ga je mogoče z različnimi git ukazi, kot je git checkout / stash / reset / commit.

  • Neuspeh med združevanjem

Če med združevanjem pride do okvare, to pomeni, da obstaja navzkrižje med vejo, ki se združuje, in trenutno vejo. Git poskuša datoteke združiti brez konfliktov, vendar če tega ne more storiti, boste to prepuščali ročno.

Kako ustvariti konflikt združitve datotek?

Vzemimo primer za prikaz / reševanje konflikta spajanja v GIT z ukazno vrstico Git vmesnik.

$ 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

Poglejmo po vrstici, kaj se dogaja v zgornjem delčku ukazov.

  • git-merge-test ustvari nov imenik in inicializira novo Gitjevo shrambo.
  • Nato ustvarite besedilno datoteko z imenom new_merged.txt z nekaj, kar je napisano na njej.
  • Na novo dodajte novo besedilo v repo in ga nato zavežite.

Zdaj imamo novo repozitorij z eno glavno vejo in datoteko new_merged.txt z nekaj vsebine. Nato ustvarimo še eno vejo, ki bo v nasprotju z združitvijo.

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

Če ga želite razčleniti, zgornje vrstice:

  • ustvari in preveri novo vejo z imenom newbranch.
  • prepiše vsebino datoteke new_merged.txt.
  • in na koncu založi novo ustvarjeno vsebino.

Z novo vejo, imenovano ena veja, se ustvari zaveza, ki prepisuje vsebino 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(+)

Zgornje zaporedje ukazov ne samo da preveri glavno vejo, doda vsebino new_merged.txt, ampak jo na koncu tudi zaveže. Zdaj ima naš primer 2 novi storitvi. Eden je v glavni veji, še en pa v novi branži. Zdaj git združite novo vejo, da vidite, kaj se zgodi!

$ 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 nam pokaže, da se je pojavil konflikt.

Reševanje sporov sporov v GIT

Urejanje konfliktne datoteke je eden od načinov za odstranitev konflikta združitve. Preprosto odprite konfliktno datoteko v urejevalniku in odstranite delilnike konfliktov, enega za drugim. Ko ga enkrat uredite, lahko dodate spremenjeno vsebino s pomočjo git add. Nov zagon lahko ustvarite z izvajanjem:

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

Git zagotavlja razrešitev konflikta in s tem ustvari novo zavzeto združitev za njegovo dokončno oblikovanje. Nekateri ukazi Git, ki pomagajo razrešiti konflikte združitve, so:

git log --merge

Združitev –abort, posredovana z ukazom git log, ustvari seznam komittov, ki so v sporu med vejami, ki se združujejo.

git status

Pomaga prepoznati konfliktne datoteke.

git diff

Pomaga pri iskanju razlik med stanji repozitorija ali datoteke. Uporablja se za napovedovanje in preprečevanje sporov. Nekatera orodja, kot so spodaj navedena, se uporabljajo pri zagonu neuspele združitve.

git reset --mixed

Uporablja se za razveljavitev sprememb trenutnega imenika.

git checkout

Uporablja se za razveljavitev sprememb datotek ali pogosteje za spreminjanje vej. Nekatera orodja, kot so navedena spodaj, se uporabljajo, ko pride do konfliktov med združitvijo.

git reset

Uporablja se za ponastavitev konfliktnih datotek med sporom združevanja.

git merge --abort

Argument mimo-abort z git spajanjem omogoča izstop iz procesa spajanja in vrnitev veje v prvotno stanje.

Prednosti reševanja sporov Git Merge

  • Uporablja se za ustvarjanje, spreminjanje, brisanje vej, datotek ali shramb brez konfliktov.
  • Lahko se uporablja za spajanje različnih različic kode.
  • Pomaga tudi pri spreminjanju in odjavljanju oddaljenih podružnic, hkrati pa se izogne ​​konfliktom.
  • Pomaga pri upravljanju in ravnanju z različicami brez konfliktov.
  • Ohrani skladišče in postopek čist in berljiv.

Zaključek

Git ima veliko uporab in ga široko uporabljajo razvijalci, vodje izdelkov in znanstveniki s podatki. Ukazi Git so zelo učinkoviti in so lahko zelo koristni. Konflikt v git-u nastane, ko dve različni veji poskušata urediti isto vrstico v datoteki ali se datoteka izbriše v določeni veji, ureja pa jo v drugi. Git uspešno združi večino združitev s svojimi funkcijami spajanja, vendar ga je mogoče rešiti tudi ročno z orodji, kot so status git, ponastavitev gita, odjavljanje git in dnevnik Git.

Priporočeni članki

To je vodnik za razrešitev sporov združitve v GIT. Tukaj razpravljamo o tem, kako učinkovito razrešiti Git Merge Conflicts z različnimi ukazi, skupaj z njegovimi prednostmi. Če želite izvedeti več, lahko preberete tudi druge naše predlagane članke -

  1. Git alternative s prednostmi
  2. Uvod v Git Tools
  3. GitHub proti SVN - najboljše razlike
  4. Najboljših 11 vprašanj o intervjuju z GIT
  5. Git Push
  6. Različice Tableau
  7. Celoten vodnik za Git oddaljeni ukaz
  8. Tri stopnje življenjskega cikla Git s potekom dela

Kategorija: