In dit bericht zullen we het je laten zien hoe u samenvoegconflicten in git kunt oplossen . Met Git kunnen ontwikkelaars takken maken van de hoofdcodebase om onafhankelijke wijzigingen aan te brengen. Deze wijzigingen kunnen vervolgens worden samengevoegd in de bestaande code. Dit stelt teams in staat om parallel te werken zonder te wachten tot anderen hun taken voltooien.
Mergenconflicten kunnen echter optreden als dezelfde delen van de code in verschillende takken worden gewijzigd. Git kan deze conflicten niet altijd op zichzelf oplossen. In dergelijke gevallen moet u ingrijpen en handmatig repareren.
Hoe u samenvoegconflicten in git kunt oplossen
Er zijn verschillende manieren om Los het samenvoegen van conflicten in git op , afhankelijk van uw workflow, gereedschap en comfortniveau. U kunt ze rechtstreeks in de terminal oplossen met behulp van GIT -opdrachten, een teksteditor zoals VS -code gebruiken of vertrouwen op GUI -tools zoals Github Desktop, Sourcetree of Gitkraken. Laten we begrijpen hoe samenvoegingsconflicten plaatsvinden en hoe ze kunnen oplossen met behulp van een eenvoudig voorbeeld met behulp van GIT en Visual Studio Code (VS -code).
Ga naar uw GitHub -account en maak een nieuwe repository met een Readme.md bestand. Laten we deze repo noemen merge-conflict-demo .
Bewerk in de volgende commit (op de hoofdtak) de Readme.md bestand en voeg wat tekstinhoud toe. De wijzigingen begaan.
Opmerking: Het is niet nodig om de readme.md te bewerken na het maken van de repository. Het doel van deze stap (hier) is om een wijziging in de hoofdtak te simuleren, zodat een conflict later kan optreden bij het samenvoegen van verschillende takken die ook hetzelfde bestand wijzigen.
Gaan naar Code> gek l en kopieer de repo's HTTPS link.
Maak vervolgens een map op uw lokale computer. Noem het zoiets als TWC_GIT_MERGE_DEMO . Open deze map in VS -code, start de terminal ( drie stippen> Terminal> Nieuwe terminal ), en kloon de GitHub -repo met behulp van:
git clone https://github.com/sangeetaghera2710/merge-conflict-demo.git
Navigeer vervolgens naar de gekloonde repo en maak een nieuwe tak genaamd Feature1 :
0C368C4E795806EFB48D8847775162B95E99B94
Voeg wat tekst toe aan het bestand readme.md, en leg de wijzigingen in en leg de wijzigingen in:
7550DA6365563CE554CC337721507D3E7C15BEC In dit voorbeeld hebben we git add .
gebruikt in plaats van DF82F619B34EE581735E611B6F53A4647A034E8
git add .
-fasen alle gewijzigde bestanden, terwijl git add README.md
STAGES ALLEEN het opgegeven bestand. Ook wordt git status
gebruikt om de huidige status van de werkmap en het verzamelgebied weer te geven.
Schakel vervolgens terug naar de hoofdtak en maak een andere tak met de naam Feature2 :
git checkout main git checkout -b feature2
Bewerk nu hetzelfde Readme.md Bestand, maar voeg een andere regel tekst toe. Nogmaals, podium en commit:
15120e7e1cbfd6d22b3d0f7605Ed54791293A5
Schakel nu terug naar de hoofdtak en mie Feature1 erin samen:
Charms-balkvensters uitschakelen 800A447E3C7C787DCAF4EC5ADDA4A32C9A7F7
Deze samenvoeging zou zonder conflicten moeten worden voltooid.
Schakel vervolgens over naar de Feature2 Branch en voeg de bijgewerkte main erin samen:
86319972F8517A70CF3B467C7FE8AEB0CFF1A66Deze keer zal een samenvoegconflict plaatsvinden in het bestand ReadMe.MD, omdat beide filialen dezelfde sectie hebben gewijzigd.
Lezen : Hoe u twee takken in git samenvoegt
Het oplossen van fusieconflicten
Wanneer een samenvoegconflict optreedt, voegt Git speciale markers toe (<<<<<<<<, ========, >>>>>>>) in de getroffen bestanden om de conflicterende secties van elke tak te markeren. Deze markers helpen u de conflicten te identificeren, zodat u handmatig kunt beslissen welke versie u moet bewaren of hoe u de wijzigingen kunt combineren voordat u de samenvoeging voltooit.
Open het conflicterende bestand (readme.md) in VS -code. U zult conflictmarkeringen zien zoals weergegeven in de bovenstaande afbeelding.
VS Code biedt u vier opties om conflicten handmatig op te lossen:
- Accepteer de huidige verandering: Houd wijzigingen bij functie2.
- Accepteer inkomende verandering: Bewaar wijzigingen van Main (inclusief functie1).
- Accepteer beide wijzigingen: Bewaar beide reeksen wijzigingen.
- Vergelijk wijzigingen: Bekijk de verschillen voordat u beslist.
Klikken Vergelijk wijzigingen . Wanneer u op wijzigingen in VS-code klikt tijdens een samenvoegconflict, opent dit een zij aan de zijde diff -weergave van het conflicterende bestand. Deze weergave toont de wijzigingen van uw huidige tak (links) en de inkomende wijzigingen van de tak die u samenvoegt (rechts). Hiermee kunt u beide versies regel voor lijn vergelijken voordat u kiest hoe u het conflict kunt oplossen.
U kunt vervolgens het bestand handmatig bewerken of een van de opties gebruiken, zoals Current accepteren, inkomende accepteren of beide rechtstreeks vanuit die weergave accepteren.
Sla het bestand op na het oplossen van het conflict. Vervolgens de wijzigingen in het toneel en plegen.
git add README.md git commit -m "Resolved merge conflict in README.md"
Dat is het! U hebt met succes een GIT -samenvoegconflict opgelost met behulp van Visual Studio Code.
Ik hoop dat je dit nuttig vindt.
Lezen: Hoe Git te downloaden en te installeren in Windows .
Hoe keer ik een commit in git terug?
Om een commit in de GIT -repository terug te keren, kunt u de git revert
Commando gebruiken. In plaats van de commit uit uw projectgeschiedenis te verwijderen, identificeert dit opdracht hoe de wijzigingen die door de commit zijn geïntroduceerd en een nieuwe ‘terugvordering’ met de resulterende omgekeerde inhoud kan omkeren en toe te voegen. Dit helpt de geschiedenis te behouden, wat belangrijk is voor zowel betrouwbare samenwerking als de integriteit van uw project.
Lees volgende: Fix niet in staat om git in het pad op Windows Computer te vinden .