Search

gitkraken를 사용해서 git confilct를 해결해봅시다.

 들어가며

터미널에서 기본적으로 사용되는 git 명령어(기초) 에서는 기본적인 명령어들을 알아봤습니다. 이번에는 gitkraken을 사용해서 머지 충돌을 해결해볼겁니다.

 깃크라켄으로 충돌을 해결해봅시다.

이런 경우에 이 글을 읽어주시면 됩니다.
Pull Request를 생성했는데 Merge가 Block되는 경우 git pull origin main를 했는데 >M<가 나타난 경우
일단 진정합니다.
충분히 해결할 수 있는 일이니 침착하세요.
되돌릴 수 없는 문제가 생긴 거 아닌가요?
문제가 생겼는데 제가 뭘 해도 되는건가요...?
망한 거 같아요 . . . .
충돌을 처리해봅시다.
충돌을 처리하기 위해서는 충돌이 일어난 브랜치를 터미널에서 pull해야 합니다.
하지만, pull 하기 전에 아직 push하지 않은 unstaged, staged file들이 있다면 깔끔하게 push하거나 git stash를 통해서 임시 저장시켜주세요. 만약, pull을 했을 때, 문제가 일어난다면 해당 파일들까지 문제가 생길 수 있고 멀리 되돌아가야할 수도 있습니다..
그리고, 해당 브랜치를 pull 해주십쇼.
아마, >M< 표시와 함께 충돌이 발생했을 겁니다.
깃크라켄 사용하기
이제 충돌을 해결하기 위해서 깃크라켄을 다운받아주세요.
깃크라켄을 켜서 문제가 일어난 파일을 찾아주세요.
1.
Open a repo를 누르고 Open a Repository를 눌러줍니다.
2.
레포 내부에 있는 파일을 누르면 안되고 해당 레포 이름을 누르게 되면 해당 레포에 대한 크라켄 화면이 열리게 됩니다. 내부에 있는 파일을 누르면 문제 메시지만 나옵니다.
진짜로 문제 해결해보기
문제가 있다면 화면에 머지가 실패했다는 문구와 함께 노란 컴플릭트 메시지가 뜹니다.
빨간색 동그라미를 누르면 노란색 부분Conflicted Files가 뜹니다.
문제를 해결하기 위해서는 노란색 부분에 뜨는 파일들을 하나씩 봐야 합니다. 해당 파일들에서 각각 충돌이 발생했기 때문이죠. 해당 파일을 누르면 두 브랜치에 어떤 부분이 달라서 문제가 생겼는지 알려줄겁니다.
충돌한 파일을 클릭하면 나타나는 화면입니다.
주황색 동그라미가 있는 부분 옆에는 각 브랜치의 네임이 쓰여있습니다. 그리고 하이라이트가 되어 있는 부분이 바로 각 브랜치에서 충돌이 발생한 부분입니다.
깃이 스스로 선택하지 못해서 우리에게 선택권을 넘겨준 부분입니다. 우리는 해당 부분에서 3가지 선택을 할 수 있게 됩니다.
1.
둘 중 원하는 브랜치의 코드만 선택하기
2.
두 브랜치 코드 모두 선택하기
3.
두 브랜치 코드 모두 선택하지 않기
예를 들어서, 이런 상황이 있다고 해봅시다.
feature/#1에서 main으로 머지를 하고 있는 상황이었고, 12번 라인이 달라서 컨플릭트가 났습니다.
commit on main | commit on feature/#1 12 >> Hello Swift | 12 >> Hello iOS
Plain Text
복사
main 코드에 체크 → Hello Swift만 사용
feature/#1 코드에 체크 → Hello iOS만 사용
main, feature/#1 모두 체크 → Hello Swift Hello iOS모두 사용
아무것도 체크하지 않음 → 두 코드 모두 안씀
물론, 한 파일 내부 여러 부분에서 머지 충돌이 발생할 수도 있습니다.
이 경우에도 동일하게 선택해주시면 됩니다.
충돌 문제를 다 해결하고 나서 Save 버튼을 누르면 직접 충돌 해결을 한 부분들이 원하는대로 고쳐집니다.
문제가 잘 해결되었는지 확인
충돌을 해결했다고 바로 push를 해버리면 문제가 생길 확률이 있습니다.
왜냐구요? 직접 충돌 해결을 했기 때문에 잘못된 선택을 했을 확률도 있기 때문이죠.
그렇기 때문에, 충돌 해결을 한 후에 꼭 프로젝트가 잘 빌드되는지 확인해주어야 합니다.
프로젝트가 열리지 않거나, 빌드가 안되는 경우를 만날 수도 있습니다.
당황하셨나요?
괜찮습니다. 우리 머지하기 전으로 돌아가봅시다.
이때를 위해서 우리는 이전에 push를 해뒀습니다. 그렇기 때문에, 이전으로 돌아갈 수 있어요.
어떻게 돌아가냐면, stash 명령어를 쓸 겁니다.
stash는 현재 했던 것들을 저장하고 전에 push했던 때로 돌아가는 명령어 입니다. 그렇기 때문에, 머지 충돌 이전의 상태를 만날 수 있습니다.
이전의 상태로 돌아가서 다시 pull 받아서 제대로 문제를 해결해주시면 됩니다.
해결 완료
해결되었다면 해결로 끝나면 안됩니다. 꼭 push를 해주고 머지가 가능한 상태라는걸 확인해주셔야 합니다.
그냥 내 데스크탑에서만 가지고 있으면 깃허브에선 해결되지 않은 상태로 존재하게 됩니다.