일상 공부

[TroubleShooting] Git: (Un)Merge Conflict

모카롤 2021. 10. 6. 01:36

너무 늦은 감이 없잖아 있지만 요새 깃을 사용하려고 많은 노력을 하고 있다. 여러 사람과 협업할 때나 일어날 줄 알았던 머지 컨플릭트를 마주하고 나서야 나는 아직 Git의 g도 모른다는 것을 뼈저리게 느꼈다. 

 

일단 (아마도) 모든 merge conflict의 해결법은 아니라는 것을 미리 적어두고 trouble shooting 진행하려고 한다.

 

 

이슈

로컬에서 레포지토리로 push 하려는 순간 conflict란 단어가 뜨면서 pull을 해서 맞추라고 에러가 떴다. 그래서 pull을 진행했으나 여전히 conflict가 발생해서 진행할 수 없다는 이슈가 연이어 발생했다. 

원인은 아마도 잘못 진행된 git commit 명령어 때문인 것으로 보인다. (정확한 원인은 여전히 알 수 없었다..ㅠㅠ)

 

 

해결방안

모든지 에러 로그를 제대로 확인하자!

문제를 해결하면서 위와 같은 결론을 얻게 되었다. 매우 바쁘게 진행하던 중 이슈를 마주하게 되어서 정신없이 대충 빨간 글씨만 읽고 대처하다가 멘붕이 되었었는데, 추후에 마음을 가다듬고 에러 로그를 찬찬히 확인하자 그들은 이미 답을 주고 있었음을 알 수 있었다. 문제 해결 방법은 아래와 같다. 

 

1. git status로 문제 상황 파악
2. git add
3. git commit
4. git push

 

 

1. git status로 현 문제 상황을 파악

git status로 현재 문제가 무엇인지 파악한다. 필자의 경우에는 아래처럼 unmerge 된 path가 있다고 적혀있다. 

즉, commit이 각각 되어있고 이것이 따로 분기가 되어버렸다는 의미다. 이를 다시 merge 해줘야 문제가 해결이 된다.

그리고 밑에 보면 git commit 혹은 git add를 이용하라고 적혀있다. git commit을 눌렀을 때도 동일한 에러 문장이 나타나서 필자는 git add를 진행했다. 

git status

 

2. git add

문제가 되는 파일을 add 해주었다. 그러자 별문제 없이 add가 되었고, 그 후에 git status로 상황을 보자, 아까와 같이 unmerge 된 충돌은 없었으며, 모든 충돌이 해결되었다고 쓰여있었다! (해치웠나?)

git add 및 conflict 해결

 

신나는 마음에 git push를 했으나 역시나 에러가 난다! (어림도 없지!) 

해치웠나? 어림도 없지!

 

왜냐면 아직 merge 단계가 마무리가 되지 않았기 때문이다! 아래처럼 분명 git commit을 통해서 머징 단계를 마무리하라고 친절하게 적혀있다! ^^

 

3. git commit -m "message"

모범생처럼 커밋 메시지와 함께 알려준대로 git commit을 실행한다. 그 후에 git status를 확인하면 전과 달리 짧은 메시지와 함께 이제는 git push를 해도 된다고 알려준다. (해치웠나? 2222)

git commit

 

이제 주저하지 말고 바로 git push를 실행해준다!

해치웠다!!!

 

결국 완벽하게 push가 되었음을 알 수 있다!! 드디어 해치웠다! 

 

이제 맘 편히 다음 작업을 진행할 수 있다. 이거 해결 못했으면 다음 작업도 진행하기 힘들었을 것 같다ㅠㅠ 

만약 unmerge로 인해 conflict가 생긴다면 git status로 현 상황을 파악하고 맞춰서 문제를 해결하는 것이 제일 안전한 것 같다! 

 

이상 Git린이의 trouble shooting 일지 끝!