Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

사고쳤어요

GIt 병합과 충돌(merge, conflict) 본문

GIt 병합과 충돌(merge, conflict)

kevinmj12 2025. 1. 24. 14:10

병합(merge)

브랜치를 따로 파서 git push 명령어를 통해 깃허브 홈페이지에 올리면 다음과 같이 노란색 박스가 생긴다.

feature/login 브랜치에 push가 되었으며, Compare & pull request를 할 수 있다.

 

해당하는 버튼을 누르면 pull request를 할 수 있다. 

 

 

먼저 상단에서는 어떤 브랜치를 어떤 브랜치에 병합할지를 선택할 수 있다.

지금 설정은 main 브랜치에 feature/login브랜치를 병합한다는 의미이다.

 

다음으로 제목, 부가설명을 입력하고 Reviewer, Assignee 등을 설정할 수 있다.

부가설명 입력은 마크다운을 지원하기 때문에 마크다운 문법을 적용할 수 있다.

 

마지막으로 맨 밑에서는 커밋 개수, 변경된 파일 개수, 기여자 수와 변경된 파일 내역을 확인할 수 있다.

 

모든 입력을 완료하고 병합을 하길 원한다면 Create pull request 버튼을 눌러 병합을 진행할 수 있다.

 

 

버튼을 눌렀다고 바로 병합이 된 것이 아니다.

상단 Pull requests 옆에 1 이라는 숫자가 생기며 새로운 pull request가 생긴 것을 볼 수 있다.

여기서 최종적으로 판단을 한 이후, Merge pull request 버튼을 눌러 최종적으로 병합을 진행할 수 있다.

 

 

병합이 잘 된 모습이다. 이제 main 브랜치는 feature/login 브랜치와 병합되었으며 내용 역시 업데이트되었음을 볼 수 있다.

 

하지만 지금은 아무 문제 없이 병합이 잘 되었지만, 여러 명이 동시에 작업을 하다 보면 문제가 발생할 수 있다.

그 전에 먼저 원격 브랜치와 로컬 브랜치를 동기화해보자.

 

동기화(fetch)

먼저 기존에 있던 브랜치 feature/login을 제거하였다.

 

이후 터미널에서 git branch -r을 통해 원격 브랜치를 확인해보면 여전히 feature/login이 살아있는 것을 볼 수 있다.

 

 

살아있다 생각하여 git pull origin feature/login을 통해 feature/login 브랜치로부터 pull을 받으려 하면 찾을 수 없다는 메시지가 나온다. 그런데 git branch -r 을 통해 확인하면 여전히 살아있는 모습이다.

 

 

이를 해결하기 위해 동기화를 진행하는 명령어는 git fetch -p 이다.

git fetch 명령을 통해 feature/login 브랜치가 사라진 것을 확인할 수 있다.

 

충돌(conflict)

 

 

먼저 충돌 상황을 만들어주기 위해 다음과 같이 두 개의 작업 환경을 만들어두었다.

 

 

이후 각각의 브랜치에 feature/1과 feature/2 두 가지의 브랜치를 만들어주었다.

 

 

feature/1 브랜치에서는 test.txt를 feature/1이라 편집하고, feature/2 브랜치에서는 test.txt를 feature/2라 편집해 푸쉬해주었다.

 

 

깃허브 홈페이지를 보면 다음과 같이 feature/1과 feature/2가 push됐다는 것을 확인할 수 있다.

 

 

먼저 feature/1을 머지해준다. 정상적으로 Able to merge가 나오며 머지가 되는 것을 확인할 수 있다.

 

 

하지만 feature/1을 머지한 이후 feature/2를 머지하려 하면 Can't automatically merge 라는 문구가 나온다.

그래도 Don't worry, you can still create the pull request라는 문구가 나온다.

 

이 브랜치는 충돌이 일어나 해결해야 한다는 문구가 나온다.

Resolve conflicts를 눌러 충돌을 해결하자.

 

 

충돌이 일어나는 부분이 노란색 배경과 주황색 괄호로 표시되어 있다.

<<<<<<< feature/2 밑에는 feature/2 브랜치에서 작업한 내용,

<<<<<<< feature/1 밑에는 feature/1 브랜치에서 작업한 내용이 나와 있다.

이 부분을 원하는 브랜치의 작업 내용으로 수정해준 뒤 Mark as resolved 버튼을 누르자.

 

 

충돌이 해결되었고 Commit merge 버튼이 활성화되었다.

위와 같은 과정을 통해 충돌을 해결하고 병합을 진행할 수 있다.

'' 카테고리의 다른 글

깃 브랜치 이름 규칙과 전략  (0) 2025.01.24
Git Clone과 Repository 연결 해제  (0) 2025.01.23
GIt Repository 생성 및 연결  (0) 2025.01.23
Git, Github와 Git 사용법  (0) 2025.01.22
버전 관리  (0) 2025.01.21