Git branch

Geon Lee·2024년 6월 4일

Git

목록 보기
3/4
post-thumbnail

Git branch

이전 장에서 언급하였듯이 이번 장에서는 branch라는 것을 다루어볼 것이다.

개발을 하다보면 코드를 여러 개로 복사하여 작업하여야 하는 경우가 생긴다. 예를 들어, 현재 배포된 서비스에서 새로운 기능을 추가하고 싶을 때, 원본 코드 위에서 작업을 하면 손상될 가능성이 있기 때문에 안전하게 복사본 위에서 작업을 한다. 이러한 경우가 많기 때문에 대부분의 DVCS는 이러한 기능을 제공하는데, Git의 branch 모델은 특히 강력한 기능을 제공한다.

branch 생성

$ git branch 브랜치명

새로운 branch를 생성하기 위해서는 branch라는 옵션 뒤에 브랜치명을 입력하면 된다.

테스트를 위해 파일을 하나 만들었다.
잘 작동하고 있는 웹페이지에 이쁜 스타일을 적용하고 싶다. 하지만 원본 파일 위에 수정하면 불안하기 때문에 branch를 하나 만들어서 작업할 것이다.

생성한 branch로 변경하고 싶으면 switch 옵션을 사용하면 된다.

$ git switch 브랜치명

현재 branch가 master에서 style로 잘 변경되었다. 이제 안전하게 작업할 수 있을 것 같다!

‘style’ branch에서 style.css 파일을 하나 만들고 커밋까지 해보았다.

이 상태에서 다시 ‘master’ branch로 이동하면 어떻게 될까?

놀랍게도 style.css 파일이 존재하지 않는다는 표시가 뜬다. 이렇게 branch는 작업 공간 자체를 분할 해주어서 쉽게 백업이 가능하도록 한다.

이쁘게 잘 수정된 것 같으니 이제 원본 프로젝트에 적용해보고 싶다. 그러기 위해선 원본 branch로 이동해야 한다.

$ git switch master

$ git merge 브랜치명

merge 옵션 뒤에 병합된 브랜치명을 입력하면 현재 브랜치에 병합된다.

master branch에도 style.css가 정상적으로 추가 되었다.

Conflict

merge할 때는 주의할 점이 있다. 바로 같은 부분을 편집하는 경우이다. 위의 경우 style.css라는 새로운 파일을 작업한 것이기 때문에 상관없지만, 같은 파일의 같은 라인을 편집한 경우 conflict가 발생한다.

직접 확인해보기 위해 index.html의 h1 안의 텍스트를 수정해보겠다.

이 상태에서 merge를 해보자

그러면 다음과 같이 h1부분에서 충돌이 일어났다고 표시가 된다. 컴퓨터는 어떤 것을 기준으로 merge 할지 판단할 수 없기 때문에 conflict에는 수동으로 수정을 해주어야 한다.

수정 이후에는 동일하게 git에 add, commit, push 해주면 된다.

profile
사회 공헌적인 Data Engineer를 꿈꾸는 이건입니다.

0개의 댓글