본문 바로가기
Git

Git(27) git rebase 로 커밋관리하기

by 새발개발JA 2021. 9. 3.
반응형

 

 

예전에는 팀원이 적었기 때문에 작업 후에는 내 브랜치에서 → 마스터브랜치로 바로 git merge 하였다. 

편하긴 하지만 커밋 이력을 보면 깔끔하지는 못했다. 요즘은 git rebase 으로 커밋이력을 관리 하고 있다. 과정이 merge 보다는 복잡하지만 커밋이력은 깔끔하다.

 

즉 rebase 와 merge 는  실행결과는 같지만 커밋 히스토리가 달라진다. (결과가 깔끔하냐 아니면 과정이 쉽게 가냐)

아래 사진을 보면 한눈에 차이점을 이해하기 쉬울 것이다.  자, 그럼 rebase 를 이해하러 가보자.

 

 

 


Git(27) git rebase 로 커밋관리하기

 

읽으며 이해하기

내 브랜치는 { 마스터 + 그 뒤로 작업한 코드 } 이다. 

작업한 코드만 싹 잘라내기(git stash)하고, 임시공간에 따로 저장해놓는다. 

내 브랜치는 { 마스터 } 만 남는다. 어딘가에  { 그 뒤로 작업한 코드 } 가 따로 임시 저장된다.

 

하지만 ㅠㅠ 

그 사이 원격 마스터 브랜치는 { 마스터 + 영수님이 작업한 코드 } 로 업데이트가 되었다. 

 

그래서 내 로컬 마스터를 git pull 로 최신으로 업데이트 한다.

내 브랜치의 { 마스터 } + { 임시공간에 저장된 코드 } 에서 마스터 부분만 업데이트(git rebase) 해준다. 

그러면 내 마스터는  { 마스터 + 영수님이 작업한 코드 } + 어딘가에 { 임시공간에 저장된 코드 } 요렇게 최신으로 업데이트 되었다. 

 

git stash pop 으로  { 마스터영수님이 작업한 코드 + 그 뒤로 작업한 코드 } 를 다시 붙여넣기 하면 최신 업데이트가 된 fresh 한 코드가 된다.

 

이제 git add 와 git commit 으로 커밋을 마무리하고 push 까지하면 브랜치가 원격 마스터로 잘 저장된다.

그리고 작업 후에는 브랜치를 삭제 해주면 한줄로 된 깔끔한 이력만이 남는다.

 

코드로 이해하기

위의 내용을 코드로 풀어보자.

 

1.  일단 새로 작업하는 브랜치부터 만들고 시작하자.

 

git checkout -b chat # 브랜치 만들고 체크아웃해주기

 

2. 내 브랜치에서 마음껏 작업한다.

 

3. 작업 후, Staging 과 Commit 하지말고 ! 내 브랜치를 가장 최신으로 업데이트 먼저 해야한다.

그 다음 그 위에 작업한 코드를 얹어 최종적으로 업데이트할 것이다. 아래 명령어를 따라가보자

 

 

git stash           	# 이 명령어는 내가 작업한 코드를 임시 저장공간에 옮겨놓는다.

git checkout master 	# 마스터 브랜치로 이동

git pull           	# 원격 마스터를 -> 로컬 마스터에 업데이트 한다

git rebase master DAN-2 # 리베이스를 통해 마스터의 내용을 내 브랜치(DAN-2)에 업데이트하자

git stash pop       	# 스태시 팝으로 임시공간의 내 코드를 최신화된 내 브랜치에 얹어준다.

 

4. 이로써 내 브랜치(DAN-2)는 최신화 + 그 위에 내 작업물까지 얹어졌다. Staging 부터 쭉쭉 진행하자.

git add .                  # 스테이징하고,

git commit -m 'add filter' # 커밋도 해주자

 

5. push 로 마무리까지 해주자.

git push origin DAN-2  # 이렇게 되면 local과 저장소의 remote branch가 자동생성된다.

 

BitBucket 에서,

 

6. BitBucket 으로 들어가 Pull requests - Create pull request 를 한다.

 

8. Pull request 를 하면 된다. (이 때 전체 task 완료 시에만 빨간박스로 표기된 Delete branch 체크 해준다.)

** 브랜치를 삭제해주는 이유는 개발이력을 master 만 남겨 여러명이 함께 작업할 때, 깨끗한 git history를 유지하기 위해서이다.

 

9. pull request 다음 화면이다. 마지막으로 틀린건 없는지 코드 비교해보고 Merge 를 누른다.

 

여기까지 오신 당신은 이제 눈감고 명령어를 친다는 git 의 베프가 되었다.

귀찮은 개발자는 멈추지 않는 법, 내친김에 JIRA 까지 연동해서 어떻게 사용할까 궁금하다면? ↓↓↓

 

Git(26) Jira와 BitBucket 을 연동한 개발 과정

개발팀 내 모든 개발 task 는 Jira 를 이용해 업무 분배를 하고 있다. 자, 그럼 Jira 가 무엇인지 알아보고, Jira와 BitBucket 을 이용한 개발 과정을 익혀보자. ** 이 포스팅은 연동 후 사용법으로 연동 과

devbirdfeet.tistory.com

 

반응형

댓글