본문 바로가기

Git

[GitKraken] Pull 사용시 유의점 - 다른 사람의 커밋이 같이 푸시되는 문제

문제 상황

1. 팀원분이 PR을 올리셨고, 해당 브랜치는 dev에 merge 되었다.
2. 그래서 나는 local dev을 최신 origin dev로 바꾸기 위해 pull을 (잘못)사용했고..
3. 결과적으로 develop에 내 브랜치를 Rebase 시켰을 때,
내 브랜치 안에서 커밋과 팀원분의 커밋이 섞여서 올라가게 되었다.
 


당황스러운 마음에 당시 화면은 캡처하지 못했지만, 대략 이런 식으로 내 브랜치에 팀원분의 커밋까지 같이 올라간 상황이었다.


 

그리고 내가 올렸던 PR에도 다른 팀원분의 커밋이 겹쳐서 올라가게 되었다.


 

 

 

문제 발생 이유

 

pull을 받아올 브랜치를 잘못 설정한 것이 화근이었다.
 
결론부터 말하면,
원래는 local dev를 최신 dev로 바꾸기 위해, local dev로 checkout 한 뒤 origin dev를 pull로 받아와야 하는데
 브랜치에 위치해있던 상황에서 origin dev를 바로 pull 해버렸다. 
 
그래서 origin dev에 있던 팀원분의 커밋을 내 브랜치로 가져오게 되었고..
Rebase이후 그대로 팀원분의 커밋도 같이 올라가게 된 것이다.
 
 

해결 방법

SOL 1. cherry-pick & push 취소

cherry-pick을 사용하여, 내 커밋을 새로운 브랜치로 옮긴 다음
기존 내 브랜치의 push를 취소하고 브랜치를 삭제하면 된다.
이후 새로운 브랜치를 새롭게 push하면 깔끔해진다.
 
이에 대한 자세한 방법은 추후 포스팅할 예정이다.


SOL 2. 애초에 pull을 사용하지 않으면 된다.

물론 local dev를 최신 dev로 바꾸기 위해 pull을 사용해도 된다.
하지만 내가 그랬듯.. 현재 나의 브랜치 위치를 깜빡한다면 실수를 하게 된다. 실수의 여지가 생긴다.
따라서 pull을 하지 않고 GitKraken을 사용하여, local dev를 최신 dev로 바꿀 수 있다.


⬇️ GitKraken으로 내 브랜치를 최신 develop에 Rebase하는 과정은 아래 포스팅에 작성해놓았다. 참고하기!

https://suoop.tistory.com/98

 

[GitKraken] 브랜치를 원격 develop에 Rebase 하는 방법

상황dev에서 feature 브랜치를 생성하여 작업 중이었는데, 팀원이 다른 브랜치를 dev에 merge 시킨 상황이다. 오래된 코드에서 계속 작업하는 것보다는 최근에 올라온 코드로 업데이트시키는 게 좋

suoop.tistory.com


결과

'다른 사람'의 커밋 중복 없이 Rebase가 잘 된 모습이다.

(내 브랜치 3개를 순차적으로 생성했기 때문에, 어쩔 수 없이 내 브랜치에서는 커밋 간 중복이 생기긴 했다.)