[BlockCar][형상관리] Git
by 한만섭
- 버전관리에 Rebase방식을 도입하게된 계기, 사용방법, 느낀점
- 커밋 메세지 한글화 및 통일시킨 결과
위 내용에 대해 정리해보겠습니다.
1. Rebase
Q. 왜 Merge대신 Rebase를 사용했나요?
- 형상관리에 대해 리서치를 하던 도중 배달의 민족 기술블로그를 통해 rebase에 대해서 알게 되었고, Rebase 방식을 사용할 경우 Git Grphq가 깔끔해지는 것을 보고 도입하기로 결정했습니다.
Q. 그렇다면 Merge와 Rebase의 차이점이 뭐죠?
- rebase는 말그대로 re + base 베이스를 다시 바꾼다는 의미입니다.
- Merge는 병합을 하는 것인데, 병합을 하면서 새로운 Merge Commit을 만들기 때문에 그래프에 커밋 개수가 많아지게 되고 보기 어려운 형태의 그래프를 나타내게 됩니다.
아래 예시를 통해 설명하겠습니다.
- Merge
위와 같이 master branch
와 3개의 commit
객체가 있는 상황에서
git checkout -b dev
위 명령어를 통해서 새로운 dev branch
를 만들고 dev branch
로 checkout
을 하고, 커밋 명령어를 통해서 2번 commit
을 했다고 가정해보겠습니다. 그러면 아래와 같은 그래프를 가질 것입니다.
위 상황에서 dev branch
를 master branch
로 병합하는 명령어를 실행해봅니다.
git checkout master
git merge dev
commit2
를 가르키고 있던 master
branch가 merge
를 통해서 fast-forward
되어서 dev
와 같은 branch
를 가리킵니다.
이렇게 보면 merge
만 사용해도 이상적인 commit graph를 나타낸다고 생각할 수 도 있습니다. 하지만 제가 branch를 만들어서 작업을 하는 도중 팀원이 커밋을 진행했을 경우 아래와 같은 그래프를 나타납니다.
위 상황에서 master
로 checkout
을 해서 merge
를 해주게 되면 그래프가 복잡해지는 상황이 나옵니다.
git checkout master
git merge dev
이렇게 하게되면 fast-forward
가 아닌 새로운 merge commit을 남기게 됩니다.
- Rebase
그렇다면 rebase
를 사용하면 어떻게 되는지 확인해보겠습니다.
글의 처음에서 얘기했듯이 rebase
란 base를 다시 지정하다라는 의미입니다. 현재 dev
branch의 root는 commit2
로서 master
가 가르키고 있는 commit
보다 뒤에 위치합니다.
여기서 아래와 같은 명령어를 사용해봅니다.
git checkout dev
git rebase master
위 명령어는 dev
branch의 base를 master
로 사용하겠다는 의미입니다.
그러면 위와 같은 형태의 그래프가 나타나게 됩니다.
Q. Rebase를 하는 방법에 대해 설명해주실 수 있나요?
-
branch 확인하기
git branch -a
-
develop branch로 checkout 하기
git checkout develop
-
원하는
feature/작업명
branch만들기git checkout -b feature/작업명
-
작업 후 commit 하기
git add . git commit -m "수정 : 작업명"
-
현재 브랜치의 base를 origin develop으로 변경하기
git pull --rebase origin develop
-
원격
feature
branch에 push 하기git push origin feature/작업명
github으로 가서 feature/작업명 에서 develop branch로 pullRequest를 보내주고 받아줍니다.
-
dev
branch 에 checkout 하기git checkout develop
-
내가 rebase 해서 갱신된 develop을 local develop에 pull하기
git pull origin develop
-
작업했던 feature branch 삭제하기
git branch -D feature/작업명
-
삭제했다는 것을 원격에 알리기
git push origin --delete feature/작업명
Q. Rebase방식을 도입해본 결과는 어떻게 됐죠?
-
적용 전
-
적용 후
-
위 사진 처럼 rebase를 적용했을 때 그래프가 보기 편했습니다.
2. 커밋메세지 한글화, 형식 통일
Q. 왜 영어대신 한글을 사용했나요?
- 이 프로젝트를 만들기 전 까진 영어로 커밋 메세지를 남겼습니다.
- 영어로 작성하면 상세하게 작성하지 않게 되었습니다.
- 제대로 작성되지 않은 커밋메세지는 다시 보게 되지도 않았고, 버전관리에 의미가 사라졌습니다.
- 팀원과 협의 후 커밋메세지를 상세하게 작성할 수 있도록 한글로 커밋 메세지를 남기기로 했습니다.
Q. 커밋메세지 형식 통일은 어떻게 했나요 ?
- 아래 표를 기준으로 상황에 맞는 커밋 메세지를 작성했습니다.
Q. 커밋 메세지 한글화를 도입해본 결과는 어떻게 됐죠?
-
프로젝트 마무리에 바빠질 때에는 한글로 작성해도 자세하게 작성하는게 어려웠습니다.
-
그래도 확실히 커밋메세지가 한글에 형식까지 통일시키니까 커밋을 찾게 될 경우 찾기 쉬웠습니다.
Subscribe via RSS