git에서 한 브랜치에서 다른 브랜치와 병합하는 방법은 두가지가 있다.
하나는 merge
하는 것이고, 다른 하나는 rebase
하는 것이다.
rebase
는 말 그대로 re-base, base를 다시 재배치 하는 것이다. `
현재 내가 작업하고 있는 브랜치를 feature/CheckGo
라고 하자.
rebase
하고 레퍼지토리에 push
하는 것까지 해보자.
1. git add . 를하고 2. git commit 을 날린다.
commit
은 개인적으로 자주 날리는 것을 추천한다. 왜냐하면 혹시나 깃에 push
나 rebase
를 하다가 내가 썼던 코드를 날리는 경우가 있다. (실제로 같은 기수 동료가 commit
을 안날린 상태로 작업을 하다가 프로젝트 했던걸 싹다 날린것을 보았다...)
그럴때 차분하게 최신 commit
으로 가면 그 당시로 복구가 가능하다.
그러니까 git add .
와 git commit
은 내가 하나의 작업을 끝내면 수시로 하는걸.. 추천
그리고 나서
3. git checkout master
master 브랜치로 가서
4. git pull origin master
다른 사람이 rebase
하고 push
해서 merge
된 것을 pull
받아 온다.
pull
을 받았으면 다시 내가 작업하던 브랜치로 이동한다.
5. git checkout feature/CheckGo
6. git rebase -i master
그러면 이 화면으로 넘어간다. 이때가 가장 중요하다.
내가 커밋을 날린 만큼 맨위에 pick
이 생길 것이다.
묻고 따지지 말고, 맨 위에 pick
은 그대로 두고,
두번째 pick
부터 지우고, s(squash)
로 바꿔준다.
이부분만 정신차리고 잘 하면 절대 날려먹을 일이 없다.
:wq
저장하고 나온다.
이전에 썼던 커밋은 지워주고, 최근에 남겼던 커밋만 남긴다.
:wq
저장하고 나온다.
사실 여기서 conflict
가 나면 그걸 또 해결해야 한다.
해결하고 나서 다시
git add .
git rebase --continue를 해준다.
또다시 conflict
가 나면 또 해결하고, --continue
를해서
conflict
가 안날때 까지 반복 작업을 해야한다.
나는 이미 프로젝트를 끝냈기 때문에 더이상 master
에 새로운게 merge
된게 없기 때문에 conflict
가 나지 않는다.
conflict
가 더이상 나지 않으면 Successfully rebase
라고 뜬다. 그럼 rebase
성공!
그리고 나서 마지막으로 push
를 해준다.
7. git push origin master
그러면 rebase
끝!
처음 git
세션을 들었을때 내가 이걸 어떻게해.. 라는 막연한 두려움이 컸다. 하지만 지금은 아무생각없이 작업하다가도 하게된다.
git은 두려워하지 말고, 일단 해봐야된다. 하다가 날려도 보고, push해보고, 그러면 자연스럽게 익숙해진다.