Git branch 기본 내용
Table of contents
git branch
git branch <브랜치이름>
위와 같은 명령어로 원하는 이름의 branch를 만들 수 있다.
test 라는 이름의 branch를 만들었고, 아직은 main에 위치해 있는 상태이다.
git checkout <브랜치이름>
위 명령어로 원하는 브랜치로 이동할 수 있다.
위와 같이 이동한 것을 확인할 수 있다.
이동 후, 로그를 살펴보면
새로 생성한 test
브랜치와 main
브랜치가 같은 위치(버전)에 있음도 확인할 수 있다.
새롭게 생성한 test
브랜치에서 새로운 파일을 생성하고 커밋한 뒤, 로그를 살펴보면
현재 작업 중인 브랜치인 test
와 main
브랜치의 위치가 달라진 것을 확인할 수 있다.
git log --branches --graph
위 구문을 입력하면, 간략한 그래프 형태로 브랜치를 시각적으로 확인할 수 있다.
git log --branches --graph --oneline
--oneline
을 추가해주면 더 간략하게 확인할 수 있다.
그렇다면, test
브랜치에서 작업한 내용을 main
브랜치로 어떻게 옮길 수 있을까? (⚠main
에서 작업한 내용을 test
로 옮기는 것이 아니다!)
합쳐질 브랜치로 이동한 후 합치고 싶은 브랜치를 가져와야 한다.
위와 같이 명령어를 입력해서 merge 를 했고, log를 살펴보면
의도했던 대로, main
브랜치에 내용이 합쳐진 것을 볼 수 있다.
참고로, test 브랜치는 merge 되었다고해서 사라진 것이 아니다.
git branch -d <삭제할 브랜치명>
위 명령어로 삭제할 수 있다.
git merge
새로운 브랜치를 만들고, 그 브랜치에서 작업한 파일이 main에서 작업하는 파일과 이름이 같으면서 내용 위치가 겹치면 merge하는 과정에서 충돌이 일어날 수 있다.
main에서 common.txt
라는 파일을 만들었고,
공통된 부분일꺼야
아마
위 문구를 작성하였고, test 브랜치로 이동하여
commmon text
라는 내용을 입력하였다.
그리고 main 으로 checkout 한 뒤, merge 를 시도하였더니 아래와 같은 상황이 일어났다.
충돌되었다는 문구가 나왔고 두 브랜치에 존재했던 같은 이름의 파일인 common.txt
파일에서 충돌이 일어났다.
<<<<<<< HEAD
공통된 부분일거야
아마
=======
common text
>>>>>>> test
위 와 같은 내용으로 변경이 되었는데, 충돌이 일어난 부분을 표시한 것이다.
충돌시, 충돌이 일어난 파일에
어떤 브랜치에서 어떤 내용이 있었는지 알려주기 때문에, 적절하게 직접 수정을 하고 커밋을 하면 된다.