코드를 짜다가 새로운 기능을 추가하려고 하는데, 코드를 잘못짜서 버그가 일어나고 프로그램이 망가질 수 있으므로 파일의 복사본을 만들어서 그곳에서 먼저 실행해보는 방법이 있다.
그것이 바로 branch(브랜치)
이다.
branch는 단어 의미 그대로 "가지"라는 의미로 사용되었으며, 작업하고 있는 프로젝트에 복사본을 가치를 치는 듯이 생성해나가기 때문에 붙여졌다.
브랜치를 생성하고, 해당 브랜치로 이동하는 명령어는 다음과 같다.
git branch 브랜치이름 // 프로젝트 사본이 하나 생성
git switch 브랜치이름 // 해당 브랜치로 이동
git switch main // 다시 메인브랜치로 돌아가기
git status // 내가 현재 있는 브랜치가 어디인지 확인할 수 있다.
git branch -d 브랜치이름 // 병합 완료된 브런치 삭제시
git branch -D 브랜치이름 // 병합하지 않은 브랜치 삭제시
어떻게 사용하는지 순서를 알아보자.
git switch commit2
git branch coupon
git switch coupon
(gragh를 붙이면 이렇게 그래프 형식으로 보여줌)
head는 내 위치라고 보면 된다.
브랜치를 만들어서 원하는 기능을 만들었고, 이상없이 작동한다면 이것을 원래의 브랜치로 다시 합쳐줘야 한다.
이것이 "Merge(머지)"
이다.
merge할때 사용되는 명령어는 다음과 같다.
git switch main
git merge 브랜치명
어떻게 사용하는지 순서를 알아보자.
하지만 주의해야할 것이 있다.
깃허브는 보통 여러명에서 작업을 해나가기 때문에 내 브랜치가 작성되는 동안, 기존의 브랜치가 변경되지 않았으리란 보장이없다. 그 경우를 고려해야한다.
만약 내 브랜치와 기존이 브랜치가 각각 다른 곳을 수정했다면 위 그림과 같이 아무 이상없이 merge가 될것이다.
같은 곳을 건드렸기 때문에 충돌이 일어날 것이다. 이를 Conflict가 발생했다고 한다.
Conflict가 발생한 경우에 터미널에는 다음과 같은 에러메시지가 출력된다.
이러한 Conflict는 수동으로 해결해주어야한다.
해당 에러메시지에서 알려주는 충돌이 난 파일로 이동해보면
다음과 같이 표시되어, 기존의 코드와 새로 코드들어온 코드중에 어떤 것을 남길것인지를 묻는다.
여기해서 남길 것을 선택해주면 된다.
이렇게 코드 수정이 완료되었다면 다시 git add 와 git commit을 통해 반영해주면 된다.
참고문헌 : 코딩애플