[2차 프로젝트] git cycle-rebase

GyungHo Go·2020년 6월 22일
1
post-thumbnail

Rebase

git에서 한 브랜치에서 다른 브랜치와 병합하는 방법은 두가지가 있다.
하나는 merge 하는 것이고, 다른 하나는 rebase 하는 것이다.
rebase는 말 그대로 re-base, base를 다시 재배치 하는 것이다. `

현재 내가 작업하고 있는 브랜치를 feature/CheckGo 라고 하자.

rebase하고 레퍼지토리에 push하는 것까지 해보자.

1. git add . 를하고 2. git commit 을 날린다.
commit은 개인적으로 자주 날리는 것을 추천한다. 왜냐하면 혹시나 깃에 pushrebase를 하다가 내가 썼던 코드를 날리는 경우가 있다. (실제로 같은 기수 동료가 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

이제부터 rebase 시작이다.

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해보고, 그러면 자연스럽게 익숙해진다.

profile
기록하는 습관

0개의 댓글