220813 TI Git 그만 좀 괴롭혀

오늘 또 git에서 충돌이 일어났다..

저번에 한번 충돌 일어난 적이 있었는데 저번에는 해결하지 않고 넘어갔었는데 이번에는 충돌 문제를 해결해야만 했다.

github에서 친절하게도(?) 충돌 난 파일들을 보여준다.

이게 몇개야.. 그냥 모든 파일 테스트 파일까지 전부 충돌이 났다.

 

이 충돌문제를 해결하기 위해 열심히 구글링을 해서 방법들을 몇 개 찾아봤다.

우선 첫번째는 깃허브에서 웹에서 해결할 수 있는 방법이 있었다.

여기서 Resolve conflicts를 누르면 되는 건데 나는 충돌 난 파일이 너무 많아서 웹에서는 해결할 수 없다고 버튼이 비활성화되어있는 상태다..

 

그러면 깃 명령어를 이용해서 해결해야 했다.

 

그래서 깃허브가 친절하게 command line까지 알려주면서 해결하라고 해준다.

스텝 1 : project repository에서 새 브랜치를 checkout하고 변경 사항을 테스트

아주 친절한 github는 어떤 브랜치로 체크아웃할지 친절히 이름까지 지어줬다.. 

git checkout 명령어 복붙해서 브랜치 만들고 git pull 명령어 복붙 했다.

뭐 이런거 뜨면서 된 거 같은데 intellj 들어가서 보면 충돌 난 부분이 안 보이는데...? 뭘 수정하지?

 

그래서 그냥 다음단계인 git checkout main 해보는데

fatal: 'main' matched multiple (2) remote tracking branches

main과 일치하는 브랜치가 2개가 추적된다고 하는 거 같은데? main이 왜 2개지..?

이 다음부터 어떻게 하는지 몰라서 포기..

 

그래서 github에서 친절하게 알려준 방법은 실패

 

다음은 구글링!

구글에는 수 많은 깃 충돌 문제 해결방법이 있었지만 내가 멍청한 건지 다양한 방법을 따라 해도 해결이 되지 않았다.

# 우선 대상 브랜치로 이동 git checkout develop

# 대상 브런치의 로컬 최신화 git pull origin develop

# 다시 내 작업 브랜치로 이동 git checkout {작업 브랜치}

# 머지 요청 git merge develop

#이러면 충돌난 곳이 아까 웹에서 나타난 것 처럼 보이게 되는데, 수정 후, add, commit, push 하자

여러 개를 찾아봐도 다 위와 같은 방법으로 브랜치 새로 checkout 한 뒤 충돌 난 파일 받아오고 수정하고 add, commit, push 하래서 했는데

또 안돼.. 파일 충돌난거 받아오고 수정까지 했는데 push 하니까 또 안 해준대..

이번에는 빨간 글씨나오면서 안 해준다는데 캡처를 못해서 뭐였는지 기억이 안 나네.. 하도 오류가 나서

 

https://www.youtube.com/watch?v=5FU-uyatBXc

그래서 이번에는 생활코딩에 깃 충돌 해결방법 유튜브 영상 있길래 따라했는데 안돼.. 왜 안돼 

 

그래서 도대체 왜 충돌이 일어나는건지 궁금해서 충돌이 일어나는 이유를 알아봤는데 

대부분의 충돌 원인은 같은 위치의 코드를 동시에 수정했기 때문이라고 한다.

협업 시 파일을 수정할 때 여러 개발자가 서로 다른 위치를 수정했다면 깃에서 서로 다른 위치의 소스를 자동으로 병합하기 때문에 문제가 없지만 동일한 파일에서 똑같은 위치에 두 명 이상이 서로 다르게 수정했다면 충돌이 발생한다고 한다.

 

근데 나는 하나의 브랜치로 나혼자 수정하고 푸시하고 했는데..?

도대체 왜 충돌이 나는거지?

 

충돌 내용을 보면 내가 푸시 바로 이전에 수정했던 내용과 이전의 전 그러니까 두 단계 전의 커밋 내용과 바로 전 커밋 내용이 충돌되고 있는 걸 알 수 있었다.

 

그러면 내가 브랜치를 잘못 설정하고 커밋을 한 건가 생각이 들지만

220810-makaoBankTransactions라는 브랜치로 파일을 만들었기 때문에 다른 브랜치로 전환을 하면

220810-makaoBankTransactions이 브랜치로 만든 파일들은 안보이기 때문에 애초에 수정이 할 수 없는 걸로 알고 있는데..?

 

결국 원인도 모르고 해결도 못하고.. 이유라도 알면 좋을 텐데

git이 친구는 알다가도 모르겠는 친구다.

 

언제까지 git에 시간을 쓸 수 없는 노릇이고 혼자 해결하지 못할 거 같아서 트레이너님께 SOS 요청한 상황이다.

 

암튼 해결하면 잘 정리해서 다음애 또 충돌 일어나면 혼자 해결할 수 있게 해야겠다.