728x90
반응형
새로운 기능을 추가하기 위해서는 기존의 잘 작성된 코드는 그대로 두고 새 소스코드를 추가한 버전만 따로 관리해야합니다. 이럴 때 사용하는 것의 "브랜치(branch)" 라는 기능입니다.
📌 브랜치란?
📚 브랜치가 필요한 이유
프로그램을 만든 후 각 고객사 별로 각 상황에 맞는 프로그램을 변경할 수 있습니다.
이렇게 하기 위해 가장 쉬운 방법은 처음에 작업했던 저장소(그림의 master) 전체를 여러 개 복사해서 각 고객사의 이름을 붙인 저장소마다 버전 관리를 따로 하는 방법이 있습니다.
그러나 이렇게 관리하다보면 내용이 겹치는 것이 너무 많아 관리가 힘듭니다. 또한 같은 기능을 위해 다른 저장소의 코드를 그대로 가져왔을 때 문제가 발생할 수 있습니다.
이럴때 사용하는 것이 깃의 브랜치입니다.
📚 브랜치 기능 살펴보기
- 깃은 버전 관리를 시작하면 기본적으로 master 브랜치가 만들어짐
- 사용자가 커밋할 때마다 master 브랜치는 최신 커밋을 가리킴
- 브랜치는 커밋을 가리키는 포인터와 비슷하다고 생각하면 좋음
- 기존의 저장된 파일을 master 브랜치를 유지하면서 기존의 파일 내용을 수정하거나 새로운 기능을 구현할 파일을 만들 수 있음
- 이렇게 master 브랜치에서 뻗어 나오는 새 브랜치를 만드는 것을 "분기(branch)"한다고 함
- 분기했던 브랜치를 master 브랜치에 합치는 것을 "병합(merge)"한다고 함
📌 브랜치 만들기
📚 새 브랜치 만들기
- git branch 명령어 : 깃 브랜치를 만들거나 확인하는 명령어
- git branch : 현재 브랜치 상태를 확인
- git branch "이름" : 이믈 상태의 깃 브랜치 만들기
📚 브랜치 사이 이동하기 - git checkout
- git checkout "이름" 명령어 : 해당 이름의 브랜치로 이동하는 것
📌 브랜치 정보 확인하기
📚 새 브랜치에서 커밋하기
- git log --branches : 브랜치의 커밋을 함께 볼 수 있음
- git log --branches --graph : 브랜치와 커밋의 관계를 더 보기 쉽게 그래프 형태로 표현함
📚 브랜치 사이의 차이점 알아보기
- git log master.."이름" : master와 이름 브랜치 사이의 차이점을 확인할 수 있음
📌 브랜치 병합하기
각 브랜치에서 작업을 마무리하고 기존 브랜치와 합칠 때는 "브랜치 병합(merge)"라고 합니다.
📚 파일 병합하기
📃 서로 다른 파일 병합하기
- 원하는 브랜치로 이동 후 git commit 으로 커밋하기
- git checkout master : 병합 전 반드시 master 브랜치로 이동하여 병합
- git merge "이름" : 병합하려는 브랜치의 이름을 넣어 병합
📃 같은 문서의 다른 위치를 수정했을 때 병합하기
- git이 브랜치를 자동으로 합쳐주기에 똑같이 git merge 로 병합
📃 같은 문서의 같은 위치를 수정했을 때 병합하기
- 각 브랜치에 같은 파일 이름을 가지고 있으면서 같은 줄을 수정했을 때 브랜치를 병합하면 브랜치 충돌(conflict)이 발생
- git merge 명령을 실행했을 때 빔이 실행되는 것이 아니라 CONFLICT 라는 메시지가 뜨면 충돌이 발생한 것
- 충돌한 내용은 직접 수정해야함
📚 병합이 끝난 브랜치 삭제하기
- git branch -d "이름" : 해당 브랜치를 삭제함
- Deleted branch "이름" 이라는 메시지가 뜨면 성공적으로 브랜치가 삭제된 것
📌 브랜치 관리하기
📚 수정 중인 파일 감추기 및 되돌리기 - git stash
- git stash 명령어 : 커밋하지 않고 작업중인 파일을 잠시 감춰둘 때 사용하는 명령어
- 파일을 수정하고 커밋하지 않은 상태에서 다른 파일을 커밋할 때 경고문을 지우는 용도
- 필요한 작업을 끝내고 감춰둔 파일을 꺼내오면 됨
반응형
'코딩언어 > Git & GitHub' 카테고리의 다른 글
[Git&GitHub] 04. 깃허브로 백업하기 (0) | 2022.12.31 |
---|---|
[Git&GitHub] 02. 깃으로 버전 관리 (0) | 2022.12.27 |
[Git&GitHub] 01. 깃 시작하기 (0) | 2022.12.23 |