Pycharm 에서는 편리하게 Git을 통해 remote 저장소에 내 코드를 연결하고 merge, rebase, cherry-pick 등 다양한 버젼 관리 기능을 제공한다. 그런데 나도 들어만 봤지 제대로 사용해본 적은 아직 없기 때문에 이 글에서 Pycharm을 통해 merge, rebase, cherry-pick 을 직접 실행해보며 공부를 좀 해보려한다.
(대부분의 설명과 그림은 링크를 참고했다)
원격 저장소 연결하기
외부 저장소에 프로젝트를 연결했고, 간단한 commit & push 도 진행한 상황
새로운 branch 만들기
이제 merge, rebase, cherry-pick 를 수행하기 위해서 branch를 분기시켜보자.
"First commit" 이라는 commit 에 우클릭 > new branch 을 통해 새로운 branch 1을 생성했다.
branch 1이 만들어진 이후 바로 checkout (해당 HEAD로 이동하는 것) 까지 수행하는 것을 확인할 수 있다.
branch 1 에서 간단한 코드를 작성하고 Commit & Push 를 진행하였다. 아래 Log tab 에 새로운 commit과 새로운 branch (branch 1) 가 추가된 것을 확인할 수 있다.
👍 remote 는 remote 저장소의 default 이름이고, master 는 main branch의 default 이름이다.
👉 Log tab 설명 참고를 위한 Pycharm 공식 manual 링크
❗😃👍 아직까지는 main branch 와 branch 1의 내용이 충돌하지 않기때문에 (지금은 새로운 코드가 추가된거지, 이전 코드가 훼손된 경우가 아님) Git log graph가 쪼개지지 않는다.
이제 main branch로 checkout하고 새로 commit & push를 진행시키고 Git log graph를 쪼개보자.
Git log graph를 보면 이제 두개의 branch (master, branch 1) 이 분리된 것을 확인할 수 있다. 동일한 코드 파일 (my_main.py) 에서 서로 충돌하는 print 문이 있기 때문에 이전과 달리 분기가 일어난 것이다.
이제 merge를 사용해서 두개의 branch를 합쳐보자. Master branch 로 checkout을 해보면, 다음 두가지 선택지가 있다.
두경우 모두 branch 1에서 발생한 변경사항을 현재 checkout 되어 있는 master branch에 편입시키는 명령어이다.
Merge로 두 branch 합치기
master에 checkout 되어 있는 상태에서 branch 1을 우클릭하고 merge 'branch1' into master 를 실행시켜보자.
현재 두 branch에서 my_main.py에 작성된 내용이 다르기 때문에 위와 같이 conflict가 발생한다. 이 경우 master나 branch 1 둘 중 하나의 내용을 사용하여 conflict 를 resolve 해야하는데 Pycharm의 경우 Merge... 버튼을 클릭하면 매우 편리하다.
Merge... 버튼을 클릭하면 위와 같은 별도의 Merge Revision 창이 뜨는데 여기서 어떤 branch 로부터 어떤 내용을 선택할지 '>> or <<' 버튼을 클릭하여 간단하게 고를 수 있다. 이 경우에선 오른쪽 branch 1의 변경사항을 선택해보자.
오른쪽 branch의 '<<' 버튼을 누르고 Apply 를 눌러 merge를 완료해보자.
짜잔😲! my_main.py 의 내용이 branch 1의 것으로 변경되었고, Git log tab 에서도 두개의 branch가 합쳐진걸 볼 수 있다.
내용이 길어져서 rebase와 cherry-pick은 다음 포스트에서 마저 진행해야겠다.
이상 끝!! 💪👦🤜
출처 참고
https://medium.com/@meghatyagi003/git-merge-vs-rebase-vs-cherry-pick-acfa46acb170
'기타 개발 공부' 카테고리의 다른 글
Pycharm에서 Git 사용하기 (Merge, Rebase, Cherry-pick) - 2 (0) | 2023.12.30 |
---|