220810 TIL 아직도 어려운 git

오늘 새벽에 과제를 다 만들고 푸쉬를 한 뒤 깃허브에 잘 올라갔는지 확인을 했는데 깃 충돌이 또 발생했다.

이전에 충돌이 한번 나서 해결 못하고 올린 pr을 임의로 close하고 다시 올렸었는데 트레이너님이 pr을 다시 보내지 말라고 하셔서 이번에는 충돌 난 걸 해결해야 했었다.

근데 나만 충돌이 난 줄 알았는데 동료분들 모두 다 충돌이 나고 pr 올린 게 이상한 곳으로 올라가는 현상이 발생했다.

 

뭐가 문제인지 확인하다가 fork가 이상하게 돼있는 것을 발견했다.

fork를 맨 처음에 1mptera 레파지토리에 있는 것을 fork해왔는데 새벽에 보니까 내가 1mptera에서 fork해온 내 깃허브의 레파지토리를 동료분들이 fork를 하고 있었다. 

그래서 동료분들이 푸쉬하면 내 깃허브로 과제가 제출되고 있었다. 

 

왜 내 걸로 왔지?? 내가 뭔가 깃 명령어를 잘못 쳐서 일어난 일인가..?? 

내가 잘못한 거 같아서 일단 동료분들에게 사과를.... 

뭐가 문제인지 모르니까 어떻게 해결해야 하는지도 몰랐다.

 

다음날 아침에 귀신같이 트레이너님이 깃허브에 문제가 생긴 걸 아시고 오셨다.

결론은 내가 잘못해서 일어난 문제가 아니었다. 깃허브 레파지토리 권한을 변경하면서 마지막에 pr 보낸 사람에게 소유권이 넘어갔다고 하셨나? 아무튼 마지막에 pr 한 사람이 나여서 나한테 동료분들의 pr이 올라온 거였다.

 

깃을 이용하다 오늘같이 깃 충돌 같은 문제가 일어나면 어찌해야 할지 멘붕상태에 빠진다.

그래서 최대한 오류를 피하기 위해서 매일 쓰는 깃 명령어만 쓴다.

add, commit, push 이 세 가지 명령어를 사용하는 게 아니면 뭔가 잘못될까 봐 항상 두려웠다.

 

그래서 오늘 애매했던 깃허브 명령어를 어떤 상황에서 써야 하는지 트레이너님께 물어봤다. 

fetch 랑 rebase를 트레이너님이 해야 한다고 하신 적이 많아서  언제 왜 해야 하는지도 모르고 사용했었는데 트레이넘한테 물어보면서 조금 알게 되었다.

 

일단 fetch를 하면 원격 저장소의 커밋들을 나의 로컬 저장소로 가져오는 기능이다.

그리고 fetch는 자동으로 병합이 되지 않기 때문에 내가 직접 확인을 한 후에 병합할 수 있다는 장점이 있다.

 

fetch에 대해 알고 나니 언제 써야 하는지는 명확해졌다.

원격 저장소의 내용과 내 로컬 저장소의 내용이 다르면 fetch 후 rebase를 해서 같게 해 주면 된다고 하셨다.

 

rebase는 merge처럼 fetch로 가져온 커밋들을 병합해주는 명령어인데 rebase와 merge의 차이는 아직 공부하지 못했다.

그래서 rebase 명령어를 공부해볼 생각이다.

rebase 명령어를 모르고 쓰다가 언젠가 또 낭패를 맛볼 거 같기 때문에..