얄팍한 코딩사전 참고.
이전 게시물에서 진행했던 과정을 토대로 하면, 이러한 그림의 결과를 도출함.
main 브랜치에서 프로젝트의 메인 작업이 진행되며,
나머지 두 브랜치에서 각각의 실험적인 시도를 해보는 중인 것임.
두 브랜치에서 작업한 내용이 채택이 되어
main 브랜치와 결합해야 한다면?
add-coach 브랜치는 merge의 과정으로,
new-teams 브랜치는 rebase의 방식으로 해보겠음.
'merge'는 병합하는 것.
main 브랜치와 다른 브랜치를 합치면 또 하나의 커밋이 생겨나게 됨.
'rebase'는 브랜치의 마디, 커밋들을 대상 브랜치로 옮기는 것.
merge와 rebase
공통점 : 결과가 같음
차이점 : 히스토리 내역이 다름.
↑ rebase의 히스토리는 깔끔하게 한 줄로 정리됨.
↑ merge의 히스토리는 브랜치의 흔적을 남김.
그렇기에 진행하는 프로젝트의 성격에 따라
브랜치의 사용 내역들을 남겨둘 필요가 있다면 merge,
히스토리를 깔끔하게 만드는 것이 중요하다면 rebase를 사용.
add-coach 브랜치를 main 브랜치로 merge
git merge add-coach
add-coach 브랜치, main 브랜치에서 작업한 내용들이 한 공간에 나타남.
소스트리에서도 확인 가능. main과 add-coach 브랜치를 합치는 또 하나의 커밋이 생겨남.
merge는 reset으로 되돌리기 가능.
'이 커밋으로 현재 브랜치를 초기화'를 클릭 후,
Hard 모드로 바꾼 후 '예' 클릭.
merge 전으로 돌아간 것을 볼 수 있음.(coach 추가 부분이 사라짐)
다시 merge하면,
두 가지의 브랜치에서 작업한 내용이 다시 한 공간에 나타남.
merge 되었으니까 add-coach 브랜치는 삭제해도 됨.
git branch -d 브랜치명
add-coach 브랜치가 삭제되었음.
이제 main 브랜치와 new-teams 브랜치만 남음.
new-teams 브랜치를 main 브랜치로 rebase
new-teams 브랜치로 이동
아래의 명령어로 병합
git rebase main
소스트리에서 상태 확인
main 브랜치로 이동 후 아래 명령어로 new-teams의 시점으로 fast-forward
해결되었음.
결론 : rebase를 할 때는 rebase할 대상 브랜치로 가서 main 브랜치로 가지 이어붙이기를 한 다음, main 브랜치의 싹을 맨 끝으로 옮겨주면 된다.
new-teams 브랜치도 병합되었으므로, 삭제하면 됨.
new-teams 브랜치 삭제.
소스트리에서 확인해보면, 깔끔하게 정리되어 있음.
vscode에서 확인하면,
main 브랜치 작업물 + add-coach 브랜치 작업물 + new-teams 브랜치 작업물
다 확인 가능함.