git/github(5)

clouood·2023년 12월 30일
0

git/github

목록 보기
5/9
post-thumbnail


얄팍한 코딩사전 참고.
이전 게시물에서 진행했던 과정을 토대로 하면, 이러한 그림의 결과를 도출함.


main 브랜치에서 프로젝트의 메인 작업이 진행되며,
나머지 두 브랜치에서 각각의 실험적인 시도를 해보는 중인 것임.


두 브랜치에서 작업한 내용이 채택이 되어
main 브랜치와 결합해야 한다면?


branch를 합치는 두 가지 방법

add-coach 브랜치는 merge의 과정으로,
new-teams 브랜치는 rebase의 방식으로 해보겠음.

[merge]

'merge'는 병합하는 것.

main 브랜치와 다른 브랜치를 합치면 또 하나의 커밋이 생겨나게 됨.


[rebase]

'rebase'는 브랜치의 마디, 커밋들을 대상 브랜치로 옮기는 것.



merge와 rebase
공통점 : 결과가 같음
차이점 : 히스토리 내역이 다름.


rebase의 히스토리는 깔끔하게 한 줄로 정리됨.

merge의 히스토리는 브랜치의 흔적을 남김.


그렇기에 진행하는 프로젝트의 성격에 따라
브랜치의 사용 내역들을 남겨둘 필요가 있다면 merge,
히스토리를 깔끔하게 만드는 것이 중요하다면 rebase를 사용.


merge, rebase 실습

[merge로 합치기]

add-coach 브랜치를 main 브랜치로 merge

  • main 브랜치로 이동
  • 아래의 명령어로 병합
    git merge add-coach
  • 소스트리로 확인


add-coach 브랜치, main 브랜치에서 작업한 내용들이 한 공간에 나타남.

소스트리에서도 확인 가능. main과 add-coach 브랜치를 합치는 또 하나의 커밋이 생겨남.


merge는 reset으로 되돌리기 가능.

  • merge도 하나의 커밋
  • merge 하기 전 해당 브랜치의 마지막 시점으로 돌아감.


'이 커밋으로 현재 브랜치를 초기화'를 클릭 후,
Hard 모드로 바꾼 후 '예' 클릭.

merge 전으로 돌아간 것을 볼 수 있음.(coach 추가 부분이 사라짐)

다시 merge하면,

두 가지의 브랜치에서 작업한 내용이 다시 한 공간에 나타남.

merge 되었으니까 add-coach 브랜치는 삭제해도 됨.
git branch -d 브랜치명

add-coach 브랜치가 삭제되었음.

이제 main 브랜치와 new-teams 브랜치만 남음.



[rebase로 합치기]

new-teams 브랜치를 main 브랜치로 rebase

  • new-teams 브랜치로 이동

  • 아래의 명령어로 병합
    git rebase main

  • 소스트리에서 상태 확인

    • main 브랜치는 뒤쳐져 있는 상황


      소스트리에 보면, main 브랜치와 new-teams의 위치가 다름. main 브랜치는 가지 끝까지 가지 않음. 그렇기 때문에 위에서 세 번째 커밋을 new-teams의 위치로 옮겨줘야 함. 이 부분에서 조금 이상한 점은 merge를 활용해야 한다는 점.
  • main 브랜치로 이동 후 아래 명령어로 new-teams의 시점으로 fast-forward

    해결되었음.

결론 : rebase를 할 때는 rebase할 대상 브랜치로 가서 main 브랜치로 가지 이어붙이기를 한 다음, main 브랜치의 싹을 맨 끝으로 옮겨주면 된다.

new-teams 브랜치도 병합되었으므로, 삭제하면 됨.

new-teams 브랜치 삭제.

소스트리에서 확인해보면, 깔끔하게 정리되어 있음.


vscode에서 확인하면,
main 브랜치 작업물 + add-coach 브랜치 작업물 + new-teams 브랜치 작업물
다 확인 가능함.

profile
雲外蒼天

0개의 댓글