Inleiding tot het oplossen van samenvoegconflicten in GIT

Het beheren van bijdragen om conflicten tussen meerdere gedistribueerde ontwikkelaars op te lossen, is een van de belangrijkste taken van de versiebeheersystemen. Om samenvoegconflicten op te lossen, moeten we eerst begrijpen wat het precies is. Het ontstaat tijdens het samenvoegen van verschillende versies van dezelfde code en wordt beheerd door het versiebeheersysteem, meestal wanneer een ontwikkelaar een bestand verwijdert terwijl een andere ontwikkelaar het nog aan het wijzigen was, of wanneer meerdere mensen dezelfde regel in een bestand proberen te wijzigen. In dit artikel zullen we meer te weten komen over Git-samenvoegconflicten, wat de oorzaak is en hoe het kan worden opgelost.

Wat is Merge Conflict in GIT?

Git heeft het samenvoegen heel gemakkelijk gemaakt omdat het automatisch nieuwe veranderingen integreert met behulp van het git merge commando. Maar in het geval van conflicten is alleen de ontwikkelaar die fuseert, zich bewust van het conflict, terwijl de anderen zich niet bewust zijn. Dus wat Git doet is, het stopt het samenvoegproces en markeert het bestand als conflicterend. De ontwikkelaar vindt vervolgens het conflict en lost het op. Conflicten tijdens het samenvoegen kunnen op de hieronder beschreven manieren gebeuren:

  • Kan het samenvoegen niet starten

In afwachting van wijzigingen in de werkmap van het huidige project, kan een samenvoeging mislukken omdat deze tijdens het samenvoegen door de commits kunnen worden overschreven. Maar het kan worden gestabiliseerd met behulp van verschillende git-opdrachten zoals git checkout / stash / reset / commit.

  • Mislukking tijdens het samenvoegen

Als er tijdens het samenvoegen een fout optreedt, geeft dit aan dat er een conflict is tussen de vertakte branch en de huidige vertakking. Hoewel Git de bestanden zonder conflicten probeert samen te voegen, maar als dit niet mogelijk is, laat het het aan jou over om het handmatig op te lossen.

Hoe maak je een bestand samenvoeg conflict?

Laten we een voorbeeld nemen om samenvoegconflicten in GIT te tonen / oplossen met behulp van de opdrachtregel Git-interface.

$ 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

Laten we regel voor regel bekijken wat er gebeurt in het bovenstaande codefragment.

  • git-merge-test maakt een nieuwe map aan en initialiseert een nieuwe Git-repository.
  • Maak vervolgens een tekstbestand met de naam new_merged.txt met iets erop geschreven.
  • Voeg de nieuw gemaakte tekst toe aan de repo en bevestig deze vervolgens.

We hebben nu een nieuwe repository met één hoofdvertakking en een bestand new_merged.txt met wat inhoud erin. Vervolgens maken we een andere branch die conflicteert met de samenvoeging.

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

Om het voor u op te splitsen, de bovenstaande regels:

  • maakt en checkt een newbranch met de naam newbranch.
  • overschrijft de inhoud van het bestand new_merged.txt.
  • en legt eindelijk de nieuw gecreëerde inhoud vast.

Met de newbranch als één branch, wordt een commit gemaakt die de inhoud in new_merged.txt overschrijft

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

De bovenstaande reeks opdrachten controleert niet alleen de hoofdtak, voegt inhoud toe aan new_merged.txt, maar legt deze uiteindelijk ook vast. Nu heeft ons voorbeeld 2 nieuwe commits. Een bevindt zich in de hoofdtak en er is er nog een in de newbranch. Git voeg nu de newbranch samen om te zien wat er gebeurt!

$ 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 laat ons zien dat conflict is verschenen.

Samenvoegconflicten oplossen in GIT

Het conflicterende bestand bewerken is een van de manieren om een ​​samenvoegconflict te verwijderen. Open gewoon het conflicterende bestand in de editor en verwijder de conflictscheiders één voor één. Eenmaal bewerkt kun je git add gebruiken om de gewijzigde inhoud toe te voegen. Een nieuwe commit kan worden gemaakt door het uitvoeren van:

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

Git zorgt voor het oplossen van het conflict en creëert zo een nieuwe toegewijde fusie om het te voltooien. Sommige van de Git-opdrachten die helpen bij het oplossen van samenvoegconflicten zijn:

git log --merge

De merge –abort doorgegeven met git log commando produceert een lijst van commits die conflicteren tussen samenvoegende branches.

git status

Het helpt om conflicterende bestanden te identificeren.

git diff

Het helpt bij het vinden van verschillen tussen de staten van een repository of een bestand. Het wordt gebruikt om samenvoegconflicten te voorspellen en te voorkomen. Sommige tools zoals die hieronder worden gebruikt bij het starten van een samenvoeging mislukt.

git reset --mixed

Het wordt gebruikt om de wijzigingen in de huidige map ongedaan te maken.

git checkout

Het wordt gebruikt om de wijzigingen in bestanden ongedaan te maken of vaker om takken te wijzigen. Sommige tools zoals die hieronder worden gebruikt wanneer conflicten optreden tijdens een samenvoeging.

git reset

Het wordt gebruikt om conflicterende bestanden opnieuw in te stellen tijdens een samenvoegconflict.

git merge --abort

Als u het argument –abort doorgeeft met git merge, kunt u het samenvoegproces afsluiten en de tak terugzetten naar de oorspronkelijke staat.

Voordelen van het oplossen van Git Merge-conflicten

  • Het wordt gebruikt om zonder conflicten branches, bestanden of repositories te maken, wijzigen, verwijderen.
  • Het kan worden gebruikt om verschillende versies van de code samen te voegen.
  • Het helpt ook om externe filialen te wijzigen en af ​​te rekenen en tegelijkertijd conflicten te vermijden.
  • Het helpt om releases zonder conflicten te beheren en af ​​te handelen.
  • Houdt de repository en het proces schoon en leesbaar.

Conclusie

Git heeft veel toepassingen en wordt uitgebreid gebruikt door ontwikkelaars, productmanagers en datawetenschappers. Git-opdrachten zijn zeer effectief en kunnen zeer nuttig zijn. Een conflict in git ontstaat wanneer twee verschillende takken proberen dezelfde regel in een bestand te bewerken, of een bestand wordt verwijderd in een bepaalde tak maar bewerkt in een andere. Git verwerkt de meeste samenvoegingen met succes met zijn samenvoegfuncties, maar het kan ook handmatig worden opgelost met behulp van tools zoals git-status, git reset, git checkout en Git-logboek.

Aanbevolen artikelen

Dit is een handleiding voor het oplossen van samenvoegconflicten in GIT. Hier bespreken we hoe Git Merge Conflicten efficiënt kunnen worden opgelost met verschillende opdrachten, samen met de voordelen ervan. U kunt ook onze andere voorgestelde artikelen doornemen voor meer informatie -

  1. Git-alternatieven met voordelen
  2. Inleiding tot Git Tools
  3. GitHub vs SVN - Topverschillen
  4. Top 11 GIT-interviewvragen
  5. Git Push
  6. Versies van het tableau
  7. Complete gids voor Git remote Command
  8. Drie fasen van Git Life Cycle With The Workflowe

Categorie: