1. Merge 과정에서 충돌이 났다면?
- 일반적으로 같은 파일에서 같은 라인을 변경한 두 커밋들을 병합(merge)하게 된다면 충돌(Conflict)이 발생한다.
- 충돌이 발생하게 되면
conflict marker를 통해 구분이 가능하다. <<<<<<< HEAD와=======사이에 있는 변경사항이 머지를 진행한 브랜치의 커밋 변경사항이다.=======와>>>>>>>{커밋 해시}사이에 있는 변경사항은 머지할 타겟 브랜치의 커밋 변경사항이다.1
2
3
4
5<<<<<<< HEAD first line ======= new line >>>>>>> 671f6f8 (conflict2 파일을 추가한다)- 충돌을 해결하기 위해선, 위에 있는
conflict marker를 지워주고 어떤 변경사항을 채택할지 결정하면 된다.
1 | |
2. 하나의 브랜치를 함께 사용하다가 충돌이 나는 경우
- A 개발자와 B 개발자가 같은 브랜치를 바라보고 작업할 때 A 개발자가 리모트 레포지토리에 먼저 커밋을 올린 상황이다.
- 그런 상황에서 B 개발자도 동일하게 커밋을 만든 상황에서 리모트 레포지토리에 푸시를 해야한다면 어떻게 해야 할까?
- 바로 푸시를 할 수는 없기에 풀을 해야 하지만, 이 경우 머지 커밋이 생기는 문제가 발생한다.
- 이런 상황에서는
pull --rebase를 사용하면 된다.
1 | |
- 풀을 할 때 리베이스 옵션을 줘서 커밋의 순서를 일정하게 보장해서 푸시를 바로 진행할 수 있다.