브랜치 간 충돌
1. 브랜치 간 충돌
- 파일의 같은 위치에 다른 내용이 입력된 상황에서는 어떻게 해야할까요? 한번 알아봅시다.
- #1. 일단 먼저, 다음과 같이 입력하여 conflict-1와 conflict-2 브랜치를 생성해줍니다.
git branch conflict-1
# (2도 동일)
- #2. main 브랜치에서 Tigers의 manager를 Jeon으로, Bears의 coach를 Choi로, Panthers의 coach를 Lee로 변경한 후, 다음과 같이 커밋 메시지를 입력하여 커밋합니다.
git commit -am "Edit Tigers, Bears, Panthers"
- #3. conflict-1 브랜치로 변경 후, Tigers의 manager를 Jung으로 변경하고 다음과 같이 입력하여 커밋합니다.
git commit -am "Edit Tigers"
- #4. conflict-2 브랜치로 변경 후, Bears의 coach를 Yoon으로 변경하고 다음과 같이 입력하여 커밋합니다.
git commit -am "Edit Bears"
- #5. Panthers의 coach를 Jang으로 변경하고 다음과 같이 입력하여 커밋합니다.
git commit -am "Edit Panthers"
- 다 마쳤으면, 이제 merge로 병합해봅시다.
- #1. main 브랜치로 이동 후, 다음과 같이 입력하여 병합해줍니다.
git merge conflict-1
→ 그러면 충돌이 발생합니다.
→ 현재 manager는 Jeon인데, conflict-1 브랜치에서의 manager는 Jung이기 때문입니다.
→ 현재 변경 사항 수락 또는 수신 변경 사항 수락을 눌러서 변경해줍니다. (저는 현재 변경 사항 수락을 눌렀습니다.)
※ 만약, 충돌되는 부분이 너무 많으면, 다음과 같이 입력해서 merge를 중단해주면 됩니다.
git merge --abort
- #2. git add .를 입력한 후, git commit를 입력 하면 다음과 같이 나옵니다. :wq로 저장하여 커밋해줍니다.
- rebase를 하려고 하는데, 충돌이 일어나면 어떻게 해야 할까요.
- #1. conflict-2 브랜치로 변경 후, 다음과 같이 입력하여 rebase해줍니다.
git rebase main
- #2. 그러면 다음과 같이 나오게 됩니다. git status를 입력하여, 무엇이 문제인지 확인해봅시다.
→ bears.yaml이 충돌이 일어난 것을 확인할 수 있습니다.
- #3. bears.yaml에 들어가 coach를 yoon으로 선택하고 충돌이 해결되었으면, git add .를 입력한 후, 다음과 같이 입력하여 진행해줍니다.
git rebase --continue
→ 그러면, 다음과 같이 나오는데 :wq로 커밋을 해줍니다.
→ 그러면 아까 나왔던 글이 다시 나타납니다. git status로 무엇이 문제인지 확인하고 해결해줍시다.
- #4. panthers.yaml에 들어가 coach를 Lee로 선택한 후, 아까와 동일하게 진행해줍니다.
→ 그러면, 정상적으로 rebase가 이루어 진것을 확인할 수 있습니다.
※ rebase또한, 중단하려면 git rebase --abort를 입력하면 됩니다.
- #5. main 브랜치는 뒤에 있기 때문에 main 브랜치로 이동 후, 다음과 같이 입력해줍니다.
git merge conflict-2
- #6. 다 마무리 되었으면, conflict-1과 conflict-2 브랜치를 삭제해줍니다.
2. 정리하며
- 지금까지 브랜치 간 충돌에 대해 알아보았습니다.
- 다음 시간엔 SoucrTree로 브랜치를 다루는 방법에 대해 알아보겠습니다.
※ 이 글은 얄팍한 코딩사전 님의 유튜브 강의를 참고하였습니다.
'Back-End Study > Git & GitHub' 카테고리의 다른 글
GitHub (1) | 2024.02.08 |
---|---|
SourceTree로 브랜치 다루기 (0) | 2024.02.06 |
merge와 rebase (0) | 2024.02.05 |
브랜치(branch) (0) | 2024.02.05 |
reset과 revert (0) | 2024.02.02 |