목적
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엔 또 다른 충돌 상황이 많을 텐데 그때마다 테스트하면서
차차 알아가 봐야겠다.
'Github' 카테고리의 다른 글
[Git] 명령어 정리 (0) | 2022.04.29 |
---|---|
[Github] commit 로그 분석 (0) | 2022.04.04 |
[Github] fetch, merge 로컬 저장소에 업데이트 방법 (0) | 2022.04.04 |
[Github] 빈 폴더 or 특정 폴더 commit 방법 (0) | 2022.03.29 |
[Github] 로컬 폴더 Github 원격 저장소 연결 방법 (0) | 2022.03.29 |