Git을 공부하게 되면서 Branch라는 내용을 배우게 되었는데, 많은 개발자들이 Branch라는 것이 있기 때문에 협업을 할 수 있고 체계적이게 파일을 관리할 수 있다는 것을 알게 되었다. 처음 접하는 만큼 나누어진 브랜치를 합치고 충돌을 제거하는 부분에서 어려움을 느끼게 되어 블로그에 정리하면서 한번더 되새김을 해보려고 한다.
Branch
란 프로젝트를 하나 이상의 모습으로 관리해야하거나 여러 작업들이 각각 독립되어 진행할 떄 이 모든 것을 하나의 프로젝트 폴더에서 진행할 수 있도록 도와주는 기능이다.
$ git branch (branch 이름)
$ git branch
$ git switch (branch 이름)
$ git switch -c (branch 이름)
$ git branch -d (branch 이름)
❗
$git log
를 이용하면 위차한 브랜치의 내역만 볼 수 있기 떄문에 여러 브랜치의 내역을 편리하게 보려면
$git log --all --decorate --oneline --graph
을 이용하자
또한 여러 브랜치의 내역을 확인할때는 GUI를 이용하는 것이 더 편리하다
- 두 브랜치를 한 커밋에 이어붙인다
- 브랜치의 사용내역을 남길 필요가 있을 때 적합한 방식
main 브랜치로 이동
$ git merge (merge할 branch이름)
입력
:wq
자동입력된 커밋 메세지를 저장 후 마무리
merge한 브랜치 삭제 (merge 하고 남은 브랜치는 바로 정리해주는 것이 좋다)
- 브랜치를 다른 브랜치에 이어붙인다
- 한 줄로 깔끔히 정리된 내역을 유지하기 원할 때 적합
- 협업할 때는 지양하는 것이 좋다
$git rebase main
입력$git merge (merge할 branch 이름)
입력 후 fast-forward
branch간 충돌
은 파일의 같은 위치에 다른 내용이 입력된 상황에서 발생
git status
명령어로 확인 후 파일에서 해당 부분 확인$git add .
로 커밋을 위한 파일 수정사항 추가 ❗ 당장 충돌 해결이 어려울 경우 $git merge --abort
명령어로 merge 중단 ❗
git status
명령어로 확인 후 파일에서 해당 부분 확인$git add .
및 $git rebase --continue
입력$git switch main
main으로 이동❗ 당장 충돌 해결이 어려울 경우 $git rebase --abort
명령어로 merge 중단 ❗
브랜치를 접하고 머릿속에서 그림 그리면서 생각했을 땐 그렇게 어렵게 느껴지지 않았는데 직접 실행해보니 파일간의 충돌, 어느 브랜치 위치에서 실행해야하는 지, 어떤 방식으로 브랜치를 합칠 것인지 등 생각해야할 부분이 많은 것 같다. 코드를 짤때도 마찬가지인 것 같다. 처음에 머릿속으로 구상할땐 이렇게 하면 구현이 되겠는데 하고 막상 작성을 시작하면 구체적으로 어떻게 구현해야할 것인지 막힐 때가 많은 것처럼 머리로 간단하게 틀을 그려보는 것과 직접 실행하는 것의 차이는 매우 크다는 것을 한번 더 느낀다.