본문으로 바로가기

[Github] merge 충돌 방지 테스트

category Github 2022. 4. 9. 10:49

목적

github에 최신 commit 된 파일을 로컬PC에서 일부러 수정한 후

merge 할 때 충돌 나는지 테스트해보고

충돌 난다면 해결책을 알아보기 위함.

 

시나리오

1. 집에 있는 데스크톱 PC에서 MemberService.java 를 일부 수정했다. 

(github에 커밋하지 않았다.)

2. 카페에서 노트북으로 MemberService.java 를 다시 작성했다.

3. github commit을 했다.

4. 집 PC에서 github에 올라간 MemberService.java 최신 소스를 merge 하려고 한다.

5. 이때 충돌이 나는지 충돌이 난다면 어떻게 해결하는지 알아보자.


- 집에 있는 PC에서 MemberService를 일부 수정했다.
- git status로 수정한 폴더 확인
- 소스 코드 마지막 line 25 
- 카페에서 노트북으로 MemberService를 작성하고 commit했다.
- github에 올라간 소스
- 소스 코드 마지막 line 47

"이 상태로 집에 있는 PC에서 pull merge 했을 때 충돌이 날까?"

 

테스트 순서

1. 파일 하나를 github에 commit된 내용과 다르게 수정한다.(시나리오 참고)

2. git fetch

3. git status

4. git merge

 -> 에러 발생

5. git clean -fd

 -> 문제가 되는 Untracked files 제거

6. git merge

 -> 정상 merge 확인

 

테스트 

1. git fetch

git fetch를 사용해 땡겨온다. 여기까지는 문제없다. 

 

2. git status

git status로 상태를 확인한다.

브랜치에 2 commits 이 있다고 한다.

추가로 Untracked files 도 있다. 내가 집 PC에서 수정한 파일이다.

 

3. git merge

git merge시에 에러가 발생한다.

github는 충돌을 방지해주는 것을 알 수 있다.

내가 집 PC에서 수정한 MemberService.java로 인해 충돌이 발생한다.

 

4. git clean -fd

git clean -n 을 통해 clean 할 수 있는 목록을 확인한다. 

흠... 안 뜬다. 

Untracked files 에 나오면 여기에도 떠야 하는데 안 뜨는 이유는 모르겠다. 나중에 찾아보자.

일단 삭제를 위해 git clean -fd를 하였다.

(f 옵션 : 파일 삭제, d 옵션: 디렉터리 삭제)

Removing ~ : 제거되었다는 메세지가 출력된다.

 

다시 git status를 하면

아까 보였던 Untracked files 는 사라진 것을 확인할 수 있다.

 

5. git merge

이제 git merge를 하면 정상적으로 merge가 된다.

 

결론

github에서 merge 충돌 상황을 방지해준다. 

충돌 시엔 Untracked files을 clean 하고 진행한다.

Untracked files가 중요한 소스일 수도 있으니 잘 확인하고 해야겠다.

github엔 또 다른 충돌 상황이 많을 텐데 그때마다 테스트하면서

차차 알아가 봐야겠다.