Úvod do řešení konfliktu sloučení v GIT

Správa příspěvků k řešení konfliktů mezi více distribuovanými vývojáři je jednou z hlavních úloh systémů pro správu verzí. Abychom vyřešili sloučení konfliktů, musíme nejprve pochopit, o co přesně jde. Vzniká během slučování různých verzí stejného kódu a je řízen systémem pro správu verzí, většinou když vývojář odstraní soubor, zatímco jiný vývojář jej stále upravoval, nebo když se několik lidí pokusí změnit stejný řádek v souboru. V tomto článku se dozvíme více o konfliktech Git sloučení, o tom, co je způsobuje a jak je lze vyřešit.

Co je Merge Conflict in GIT?

Git usnadnil sloučení, protože automaticky integruje nové změny pomocí příkazu git merge. V případě konfliktů je však o konfliktu znám pouze vývojář, který se sloučí, zatímco ostatní nevědí. To, co Git dělá, je, že zastaví proces sloučení a označí soubor jako konfliktní. Vývojář potom konflikt najde a vyřeší. Konflikty během slučování mohou nastat níže popsanými způsoby:

  • Nepodařilo se zahájit sloučení

V případě čekajících změn v pracovním adresáři aktuálního projektu může sloučení selhat, protože by mohly být přepsány při odevzdání během sloučení. Lze ji však stabilizovat pomocí různých příkazů git, jako je git checkout / stash / reset / commit.

  • Porucha během slučování

Pokud během sloučení dojde k selhání, znamená to, že existuje konflikt mezi větví, která je sloučena, a aktuální větví. Přestože se Git pokouší sloučit soubory bez konfliktů, ale pokud to nedokáže, ponechá to na vás, abyste je ručně vyřešili.

Jak vytvořit konflikt sloučení souborů?

Vezměme si příklad ukázat / vyřešit sloučení konfliktu v GIT pomocí rozhraní příkazového řádku 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

Uvidíme řádek po řádku, co se děje ve výše uvedeném úryvku příkazů.

  • git-merge-test vytvoří nový adresář a inicializuje nové úložiště Git.
  • Dále vytvořte textový soubor s názvem new_merged.txt s něčím, co je na něm napsáno.
  • Přidejte nově vytvořený text do repo a pak jej potvrďte.

Nyní máme nové úložiště s jednou hlavní větví a soubor new_merged.txt s obsahem v něm. Poté vytvoříme další větev, která bude v rozporu s slouč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(-)

Chcete-li to rozdělit na vás, výše uvedené řádky:

  • vytvoří a odhlásí newbranch s názvem newbranch.
  • přepíše obsah souboru new_merged.txt.
  • a nakonec odevzdá nově vytvořený obsah.

S newbranch s názvem jedna větev se vytvoří potvrzení, které přepíš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(+)

Výše uvedená posloupnost příkazů nejen kontroluje hlavní větev, přidává obsah do new_merged.txt, ale také ji zavazuje. Náš příklad má nyní 2 nové závazky. Jeden je v hlavní větvi a další je v nové větvi. Nyní git sloučit newbranch vidět, co se 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 došlo ke konfliktu.

Řešení konfliktů sloučení v GIT

Úpravy konfliktního souboru je jedním ze způsobů, jak odstranit sloučení konfliktů. Jednoduše otevřete konfliktní soubor v editoru a postupně odstraňte děliče konfliktů. Po úpravě můžete přidat git add k přidání modifikovaného obsahu. Nový odevzdání lze vytvořit provedením:

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

Git zajišťuje řešení konfliktu, a tak vytváří nové odhodlané sloučení, aby jej dokončil. Některé z příkazů Git, které pomáhají řešit sloučení konfliktů, jsou:

git log --merge

Příkaz hromadné korespondence předaný příkazem git log vytvoří seznam revizí, které jsou v rozporu mezi slučovacími větvemi.

git status

Pomáhá identifikovat konfliktní soubory.

git diff

Pomáhá při hledání rozdílů mezi stavy úložiště nebo souboru. Používá se k předpovídání a předcházení sloučení konfliktů. Některé nástroje, jako jsou níže uvedené, se používají při spuštění selhání sloučení.

git reset --mixed

Slouží ke zrušení změn provedených v aktuálním adresáři.

git checkout

Používá se pro zrušení změn v souborech nebo častěji pro změnu poboček. Některé nástroje, jako jsou níže uvedené, se používají, když během sloučení dojde ke konfliktům.

git reset

Používá se k resetování konfliktních souborů během sloučení.

git merge --abort

Předání argumentu -abort s sloučením git umožňuje jednomu ukončit proces sloučení a vrátit větev do původního stavu.

Výhody řešení konfliktů Git Merge

  • Používá se k vytváření, úpravám, mazání větví, souborů nebo úložišť bez konfliktů.
  • Může být použit k sloučení různých verzí kódu.
  • Pomáhá také provádět změny a vyúčtování vzdálených větví a současně zabránit konfliktům.
  • Pomáhá spravovat a zpracovávat vydání bez konfliktů.
  • Udržuje úložiště a proces čistý a čitelný.

Závěr

Git má mnoho použití a je široce používán vývojáři, produktovými manažery a datovými vědci. Příkazy Git jsou velmi efektivní a mohou být velmi užitečné. Konflikt v gitu vzniká, když se dvě různé větve pokusí upravit stejný řádek v souboru nebo se soubor odstraní v konkrétní větvi, ale upraví se v jiném. Git zvládne většinu sloučení úspěšně se svými slučovacími funkcemi, ale může být také vyřešen ručně pomocí nástrojů, jako je stav git, reset gitu, checkout gitu a protokol Git.

Doporučené články

Toto je průvodce, jak vyřešit konflikt slučování v GIT. Zde diskutujeme o tom, jak efektivně vyřešit konflikty Git Merge s různými příkazy a jejich výhodami. Další informace naleznete také v dalších navrhovaných článcích -

  1. Získejte výhody s výhodami
  2. Úvod do Git Tools
  3. GitHub vs SVN - hlavní rozdíly
  4. Top 11 otázek rozhovoru GIT
  5. Git Push
  6. Verze Tableau
  7. Kompletní průvodce vzdáleným příkazem Git
  8. Tři fáze životního cyklu Gitu s pracovním postupem

Kategorie: