본문 바로가기
etc

git - branch

by 스르나 2020. 7. 8.

branch

 

깃의 다른 기능중 하나인 브랜치가 있다. 브랜치는 현재 프로젝트에 새로운 기능이나 수정 사항이 있을때 이것의 내용이 아주 방대하거나 주요 기능을 건드릴때 유용합니다. 브랜치의 역할은 기존의 프로젝트에 새로운 기능을 추가하는 작업장을 임시로 추가한다고 생각하면 됩니다.

 

다르게 표현하면 기존의 프로젝트를 수정할때 따로 백업을 하지 않고 수정용 작업트리를 추가 하는 것 입니다.

 

이렇게 수정용 작업트리에서 작업이 완료 되면 수정한 내용을 메인 작업 트리에 추가를 하면 됩니다.

 

그럼 이제 부터 간단한 사용 방법과 다소 어려운 부분까지 한번 보겠습니다.

 

branch 확인,추가,삭제

 

이번에는 바탕화면에 bbb라는 폴더를 만들고 해당 폴더를 깃 저장소로 init한뒤 텍스트 파일을 만들고 커밋을 해봤습니다.

 

그다음 git branch 명령어를 사용하면 * master라는 것이 나옵니다. 현재는 따로 브랜치를 추가하지 않았기 때문에 최초로 생성되는 마스터 브랜치만 존재 합니다.

 

그 다음으로는 브랜치를 추가 하는 방법을 보겠습니다.

 

git branch 브랜치이름

 

브랜치 추가는 간단하게 git branch 브랜치이름 이렇게 하면 됩니다.

 

삭제또한 매우 간단합니다.

 

git branch -d 삭제할 브랜치 이름

 

 

브랜치 이동은 git checkout 브랜치이름 입니다.

 

위처럼 브랜치가 바뀌면 커맨드라인에서 확인이 가능합니다.

브랜치 변경후 파일 추가,수정후 통합

 

이번에는 추가한 브랜치에서 새로운 파일을 추가한 후 통합을 해보겠습니다.

 

hello.txt파일을 만들고 b1브랜치에서 현재 깃의 상태를 확인해보겠습니다

 

보다싶이 브랜치가 바뀌었을 뿐 예상한대로 잘 되고있습니다.

 

여기서 기존의 master브랜치는 어떤 상태일까요? 위에서 설명한대로 브랜치는 새로운 작업트리이기 때문에 master브랜치에는 아무 변경사항을 없습니다.

 

위 그림을 보다싶이 b1에서 추가한 hello.txt파일은 당연히 없습니다.

 

이제 b1에서 작업한 내용을 master브랜치로 통합해 보겠습니다.

 

git merge 브랜치이름

 

master 브랜치에서 b1의 수정 내용을  통합하니 이제 hello.txt파일이 생긴것을 볼 수 있습니다.

 

이처럼 브랜치 통합에서는 새로 만든 파일을 자동으로 가져와 줍니다.

 

 

이번에는 같은 파일을 수정했을 경우 입니다.

 

이경우는 2가지 경우로 또 나뉘는데 같은 파일의 다른 위치를 수정했을 때와 서로 같은 위치를 수정했을때 입니다.

 

전자 같은 경우는 간단하지만 후자는 좀 손이 가는 작업입니다. 한번 보겠습니다.

 

 

같은 파일의 같은 위치수정

 

일단 현재 hello.txt파일의 상태입니다.

 

이 파일에서 master브랜치는 hello옆에 느낌표를 추가하고 b1브랜치는 아래에 hello를 한줄 더 쓰겠습니다.

 

 

우선 master에서 수정한뒤 b1브랜치에서 확인을 하니 b1에는 영향이 없는것을 볼 수 있습니다.

 

b1브랜치에서 아래에 한줄 추가를 했습니다.

 

여기서 왜 같은 위치인가 하면 우리는 hello!는 o옆에 느낌표가 있고 hello 2줄은 자동으로 줄바꿈 문자가 들어가서 같은 위치가 수정된 것에 차이가 있다는 것 입니다.

 

그렇다면 이것을 master에서 통합하면 어떤 결과가 나오는지 보겠습니다.

 

보다싶이 충돌 경고 메세지가 나오고 해당 파일에 <<<<< HEAD와 >>>b1이 있습니다.

 

위표시가 충돌된 부분을 나타냅니다.

 

<<HEAD와 === 표시 사이는 현재의 브랜치에서 수정한 내용이고, ===와 >>>b1은 b1브랜치에서 수정한 내용입니다.

이럴 경우는 <<HEAD부터 >>>b1까지의 내용을 보고 상황에 맞게 해당 부분을 수정후  <<<HEAD, ==, >> b1을 삭제해주고 새로이 커밋하면 됩니다.

 

이런경우는 이렇게 충돌된 부분을 일일이 확인하면 수정을 해야해서 손이 가는 작업입니다.

 

같은 파일 다른 위치 수정

 

이번에는 새로운 폴더와 파일을 위처럼 만들었습니다.

 

그다음 b1브랜치를 추가하고 b1에서 test.txt파일의 내용을 수정했습니다.

 

 

그 다음 master로 돌아가 병합해 보겠습니다.

 

 

보다싶이 같은 파일의 다른 위치는 간단하게 처리됩니다.