Git Workflow & Rebase

강현구·2022년 1월 12일
0

Git flow

Basic flow

개발 진행 시, 개발한 코드를 main 에 바로 merge할 경우 문제발생 시에 타격이 크다.
따라서 main에 바로 merge하는 것이 아닌, main과 똑같은 develop branch를 만들어 해당 branch에서 개발 진행 및 검토를 한다.
완성된 Develop branch는 Realse branch를 통해서 QA(quality assurance)를 진행한다. (1차 프로젝트의 프/백 전체 테스트와 유사하다)
최종 검토, Bugfix 까지 마친 개발은 main으로 merge하고 이후에 발생하는 bug는 main에서 바로 따온 branch인 hotfix를 통해서 신속하게 fix를 한다.

Git Rebase

merge


merge를 할 경우 main으로 branch의 commit log가 전부 따라간다.

또다른 branch의 main merge를 위해 main을 내려 받고, main으로 다시 올리면서 전체 commit log가 다 따라간다.


문제점 : 검정색으로 된 Merge Commit log가 남게된다.
각각의 branch commit log가 전부 복사해서 붙는다.
>> 가독성이 떨어지고 유지보수가 어려워진다.

rebase

다음과 같이 Rebase할 수 있다.

Squash

squash라는 옵션을 통해서 commit message를 하나로 만들어 줄 수 있다.

Rebase를 사용할 때는 add, commit 후 바로 push하는 것이 아니라 아래의 작업을 진행한다.
가장 첫번째 커밋은 건드리지 않고 pick으로 고정.
나머지는 s 를 붙여 squash 해준다.

이렇게 하면 commit message를 작성하는 창이 나온다.

rebase의 push는 -f를 붙여 강제로 올려줘야한다...
-f를 쓰는 것은 좋지 않지만 rebase를 쓸 떄는 commit의 hash값이 달라지기 때문에 맞지 않아서 정상적으로는 push할 수 없다.

rebase 중 충돌이 날 경우, 충돌을 해결하고 rebase를 진행해야한다.
충돌을 줄이기 위해 commit이 두세개 정도 쌓였을 때, 미리미리 rebase로 정리해주자.

Git 명령어

  • git reset soft (or hard)
  • git log
  • git reflog
  • git checkout <commit>
  • git stash & git stash apply & git stash clear
profile
한걸음씩

0개의 댓글