힘내 튜토리얼-지점 병합

Jinku Hu 2023년1월30일
  1. 빨리 감기 git merge
  2. 재귀 git merge
  3. 갈등 해결
힘내 튜토리얼-지점 병합

우리는 브랜치를 병합하는 방법을 배우고이 튜토리얼에 존재하는 경우 충돌을 처리합니다.

마지막 튜토리얼에서 우리가 한 것은 master 브랜치를 엉망으로 만들고 싶지 않은 새로운 기능을 다루기 위해 새로운 브랜치를 만들었습니다.

이러한 새로운 브랜치를 만들고 새로운 기능에 만족 한 후에는 다시 ‘마스터’브랜치로 병합해야합니다. 다음 릴리스 코드를 게시 할 때 새로운 기능도 포함됩니다.

빨리 감기 git merge

new_test_branch 브랜치의 변경 사항에 만족하고 다시 master에 병합한다고 가정 해 봅시다.

  • master 브랜치 확인
   $ git checkout master
  • 지점을master 로 병합
   $ git merge new_test_branch
   Updating 5fef94e..e7a7e81
	Fast-forward
	test3.txt | 3 ++-
	1 file changed, 2 insertions(+), 1 deletion(-)

우리는 new_test_branch 지점에서이 기능을 가져 와서이master 지점으로 병합했습니다.

병합 후 메시지에 표시된 Fast-forward 는 git 이 분기에서 작성한 코드 변경 사항까지 빠르게 전달한다는 것을 의미합니다. master 브랜치에서 변경했습니다.

재귀 git merge

이 서로 다른 git merge 를 시연하기 전에 두 가지 test_branch_Atest_branch_B 를 만들어서 서로 다르게 변경해야합니다. 그런 다음 test_branch_A 를 다시 master분기로 병합합니다.

이제 우리는 test_branch_Bmaster 에 병합 할 것입니다.

$ git merge test_branch_B
Merge made by the 'recursive' strategy.
 test1_rename.txt | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

이 병합과 ‘빨리 감기’병합의 차이점은이 분기 코드에는 test_branch_A기능이 없기 때문에 재귀 전략에 의해 병합된다는 것입니다. 즉,test_branch_B 분기가 작성된 후 master 분기가 변경되었습니다.

이제 ‘마스터’는이 두 가지 기능을 모두 갖춘 최신 정보이며, 우리가 동시에 작업 한 것은 중요하지 않습니다. 다른 사람들이 병합하여 다시 병합하면 모든 것이 정상입니다.

갈등 해결

두 가지 테스트 브랜치에서 수정 한 내용은 충돌이 없지만 일부 브랜치를 ‘마스터’에 병합 할 때 충돌이 발생하면 어떻게합니까?

test_branch_Ctest_branch_D 라는 두 가지 분기를 만든 다음 test_branch_C 분기의 test3.txt 파일에 The letter should be C 라는 텍스트를 추가합니다.그런 다음test_branch_D 브랜치의test3.txt 파일에The letter should be D라는 텍스트를 추가합니다.

그런 다음 test_branch_C 를 다시 master분기로 병합합니다.

이제 우리는 test_branch_Dmaster 에 병합 할 것입니다.

$ git merge test_branch_D
Auto-merging test3.txt
CONFLICT (content): Merge conflict in test3.txt
Automatic merge failed; fix conflicts and then commit the result.

여기에서 test3.txt 파일에서 충돌을 감지하여 성공적으로 병합 할 수 없음을 알 수 있습니다. 충돌하는 파일을 편집하여 충돌을 수동으로 해결해야합니다.

test3.txt 파일은 다음과 같이 충돌을 보여줍니다.

<<<<<<< HEAD
The letter should be C
=======
The letter should be D
>>>>>>> test_branch_D

HEAD=======사이의 텍스트는 병합 된 분기 test_branch_C 에서 가져온 master 분기의 텍스트이며 병합 할 분기 test_branch_D 의 텍스트와 다릅니다.

master 에 보관할 텍스트를 선택하고<<<<<>>>>>와 같은 모든 기호를 삭제해야합니다.

추가 된 텍스트는 ‘글자가 D 여야합니다’라고 가정 해 봅시다. 충돌하는 영역을 ‘문자는 D 여야합니다’로 업데이트합니다.

충돌을 해결 한 후, git commit을 사용하여 해결 된 충돌을 커밋 할 수 있습니다.

작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook