Wprowadzenie do rozwiązania konfliktu scalania w GIT

Zarządzanie wkładami w rozwiązywanie konfliktów między wieloma rozproszonymi programistami jest jednym z głównych zadań systemów kontroli wersji. Aby rozwiązać konflikty scalania, najpierw musimy zrozumieć, co to dokładnie jest. Powstaje podczas łączenia różnych wersji tego samego kodu i jest zarządzany przez system kontroli wersji, głównie gdy programista usuwa plik, podczas gdy inny programista wciąż go modyfikuje lub gdy wiele osób próbuje zmienić tę samą linię w pliku. W tym artykule dowiemy się więcej na temat konfliktów scalania Git, co go powoduje i jak można je rozwiązać.

Co to jest konflikt scalania w GIT?

Git bardzo ułatwił scalanie, ponieważ automatycznie integruje nowe zmiany za pomocą polecenia git merge. Ale w przypadku konfliktów tylko programista, który się łączy, jest świadomy konfliktu, podczas gdy inni nie są świadomi. Tak więc Git zatrzymuje proces scalania i oflaguje plik jako powodujący konflikty. Następnie programista znajduje i rozwiązuje konflikt. Konflikty podczas łączenia mogą się zdarzyć na poniżej opisane sposoby:

  • Nie można rozpocząć scalania

W przypadku oczekujących zmian w katalogu roboczym bieżącego projektu scalanie może się nie powieść, ponieważ mogą zostać zastąpione przez zatwierdzenia podczas łączenia. Ale można go ustabilizować za pomocą różnych poleceń git, takich jak git checkout / stash / reset / commit.

  • Błąd podczas łączenia

Jeśli podczas scalania wystąpi awaria, oznacza to, że istnieje konflikt między łączoną gałęzią a bieżącą gałęzią. Chociaż Git próbuje scalić pliki bez konfliktów, ale jeśli nie będzie mógł tego zrobić, pozostawi to Tobie samodzielne rozwiązanie.

Jak utworzyć konflikt scalania plików?

Weźmy przykład, aby pokazać / rozwiązać konflikt scalania w GIT za pomocą interfejsu Git z wiersza poleceń.

$ 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

Zobaczmy, co się dzieje w powyższym fragmencie poleceń.

  • git-merge-test tworzy nowy katalog i inicjuje nowe repozytorium Git.
  • Następnie utwórz plik tekstowy o nazwie new_merged.txt z czymś na nim zapisanym.
  • Dodaj nowo utworzony tekst do repozytorium, a następnie zatwierdz go.

Mamy teraz nowe repozytorium z jednym odgałęzieniem głównym i plik new_merged.txt z zawartością. Następnie tworzymy kolejną gałąź, która będzie w konflikcie ze scaleniem.

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

Aby to rozbić, powyższe linie:

  • tworzy i sprawdza nową gałąź o nazwie newbranch.
  • nadpisuje zawartość pliku new_merged.txt.
  • i ostatecznie zatwierdza nowo utworzoną treść.

Z newbranch o nazwie jeden oddział, tworzone jest zatwierdzenie, które zastępuje zawartość w 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(+)

Powyższa sekwencja poleceń nie tylko sprawdza gałąź master, dodaje zawartość do new_merged.txt, ale także zatwierdza ją na końcu. Teraz nasz przykład ma 2 nowe zmiany. Jeden jest w gałęzi master, a jeszcze jeden w newbranch. Teraz git scal newbranch, aby zobaczyć, co się stanie!

$ 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 pokazuje nam, że pojawił się konflikt.

Rozwiązywanie konfliktów scalania w GIT

Edycja konfliktu pliku jest jednym ze sposobów usunięcia konfliktu scalania. Wystarczy otworzyć plik edytora w konflikcie i usuwać dzielniki konfliktu jeden po drugim. Po edycji możesz użyć git add, aby dodać zmodyfikowaną treść. Nowe zatwierdzenie można utworzyć, wykonując:

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

Git zapewnia rozwiązanie konfliktu, a tym samym tworzy nowe scalenie, aby go sfinalizować. Niektóre polecenia Git, które pomagają rozwiązać konflikty scalania, to:

git log --merge

Polecenie merge –abort przekazane za pomocą polecenia git log tworzy listę zatwierdzeń sprzecznych między łączącymi się gałęziami.

git status

Pomaga zidentyfikować pliki będące w konflikcie.

git diff

Pomaga w znalezieniu różnic między stanami repozytorium lub pliku. Służy do przewidywania konfliktów scalania i zapobiegania im. Niektóre narzędzia, takie jak te podane poniżej, są używane podczas rozpoczynania niepowodzenia scalania.

git reset --mixed

Służy do cofania zmian dokonanych w bieżącym katalogu.

git checkout

Służy do cofania zmian w plikach lub częściej do zmiany gałęzi. Niektóre narzędzia, takie jak te podane poniżej, są używane, gdy podczas łączenia pojawiają się konflikty.

git reset

Służy do resetowania konfliktu plików podczas konfliktu scalania.

git merge --abort

Przekazywanie argumentu -abort za pomocą git merge pozwala wyjść z procesu scalania i przywrócić gałąź do pierwotnego stanu.

Zalety rozwiązywania konfliktów Git Merge

  • Służy do tworzenia, modyfikowania, usuwania oddziałów, plików lub repozytoriów bez konfliktów.
  • Można go użyć do scalenia różnych wersji kodu.
  • Pomaga także wprowadzać zmiany i sprawdzać zdalne gałęzie, jednocześnie unikając konfliktów.
  • Pomaga zarządzać wersjami i obsługiwać je bez konfliktów.
  • Utrzymuje repozytorium i proces w czystości i czytelności.

Wniosek

Git ma wiele zastosowań i jest szeroko stosowany przez programistów, menedżerów produktu i naukowców zajmujących się danymi. Polecenia git są bardzo skuteczne i mogą być bardzo przydatne. Konflikt w git powstaje, gdy dwie różne gałęzie próbują edytować ten sam wiersz w pliku lub plik jest usuwany w określonej gałęzi, ale edytowany w innej. Git z powodzeniem obsługuje większość połączeń dzięki swoim funkcjom łączenia, ale można go również rozwiązać ręcznie za pomocą narzędzi takich jak status git, reset git, kasa git i dziennik Git.

Polecane artykuły

To jest przewodnik po rozwiązywaniu konfliktów scalania w GIT. Tutaj omawiamy, jak skutecznie rozwiązywać konflikty Git Merge za pomocą różnych poleceń wraz z jego zaletami. Możesz także przejrzeć nasze inne sugerowane artykuły, aby dowiedzieć się więcej -

  1. Git Alternatywy z zaletami
  2. Wprowadzenie do narzędzi Git
  3. GitHub vs SVN - Najważniejsze różnice
  4. Top 11 pytań do wywiadu GIT
  5. Git Push
  6. Wersje Tableau
  7. Kompletny przewodnik po zdalnym poleceniu Git
  8. Trzy etapy cyklu życia Git z przepływem pracy

Kategoria: