여태까지
master
와branch
사이에update
된 사항이 있으면 변경 사항을 맞춰주기 위해 각각의branch
로 이동해서master
의 내용을merge
해줬는데,merge
가 아닌rebase
라는 기존과 다른 방식을 사용해서도 같은 기능을 수행할 수 있다.
rebase
를 처음 사용하면서 혼돈의 시간을 보냈고, 실제로GitHub
에 있는master
에서 파일이 삭제되는 불상사가 발생하기도 했다... 그래도 감당할 수 있는 수준의 작업이여서, 이런 일을 차라리 미리 경험해봐서 다행이기도 했다.
위 그림을 보면 merge
는 Feature
의 내용이 계속 유지가 되면서 Master
의 내용 중 변경된 것이 Feature
에 update
되고, rebase
는 기존의 Feature
가 update
되는 것이 아니라 변경된 Master
를 기준으로, 새로운 Feature
브랜치를 만든다. 말 그대로 branch
가 base로 하고 있는 master
를 다시 설정한 것이다. base
를 바꾸게 되면 당연히 변경된 master
의 내용은 알아서 반영이 된다.
그래서
rebase
가merge
보다 좋은점이 뭐가 있을까?🤔
merge
를 사용하면base
가 되는master
가 여러 곳이기 때문에, 나중에history
를 볼 때 찾아가기가 힘들 수도 있다. 하지만,rebase
를 사용하면base
가 되는master
가 한 곳이기 때문에history
를 깔끔하게 정리할 수 있다.
commit
과 history
를 모두 기록하기 때문에, 나중에 commit
이 굉장히 많이 쌓이게 된다.commit
내역을 하나로 합쳐주기 때문에, commit
내역이 복잡해지지 않는다.git commit -m
git checkout master
git pull origin master
git checkout branchName
git rebase -i master
-> commit message
하나로 통합git push origin feature/branchName
git rebase --continue
: master
와 conflict
발생시 해결git rebase --abort
: git rebase
중지