깃(8)-브랜치

hyihyi·2022년 5월 11일
0
post-custom-banner

브랜치

버전관리에 쓰이는 브랜치
제품을 출시하고 고객사마다 다른 요구사항을 반영해야할 때 브랜치를 쓴다.
방법 1. 처음에 작업했던 저장소 전체를 여러 개 복사해 각 고객사의 이름을 붙인 다음 저장소마다 버전 관리를 따로 한다.

  • 문제점 : 고객사마다 디렉토리를 복사하며 자료가 중복된다. 그리고 고객사마다 디렉토리 이름을 다르게 사용해야 한다.

브랜치 기능 살펴보기

깃으로 버전 관리를 시작하면 기본적으로 master라는 브랜치가 만들어진다. 사용자가 커밋할 때마다 master 브랜치는 최신 커밋을 가리킨다. 즉, 브랜치는 커밋을 가리키는 포인터와 비슷하다고 생각하면 된다.

-->HEAD는 여러 브랜치 중에서 현재 작업 중인 브랜치를 가리킨다.

새 브랜치 만들기 git branch

깃에서 브랜치를 만들거나 확인하는 명령어

$ git branch
 $ git branch apple

--> apple 브랜치를 만드는 명령어

-->master 앞에 * 표시는 아직 master 브랜치에서 작업하고 있다는 뜻

-->master, apple 2개의 브랜치가 있고, 현재 작업 중인 브랜치는 master 브랜치라는 뜻

브랜치 사이 이동하기 git checkout

master 브랜치 하나만 있을 때 work1, work2, work3 커밋을 총 3개 하고 난 뒤 apple, google, ms 브랜치를 만들고 master 브랜치에서 work4 커밋을 하고 apple 브랜치로 이동하면 apple 브랜치에는 master 브랜치에서 apple 브랜치를 분기하기 전인 work3 커밋까지만 복사된 것을 확인할 수 있다.

$ git checkout apple

--> apple 브랜치로 이동

-->master 브랜치에서 분기된 이후에 master 브랜치에 추가된 커밋은 apple 브랜치에 영향을 미치지 않는다.

브랜치 정보 확인하기

새 브랜치에서 커밋하기

현재 저장소에서 수정된 파일을 한꺼번에 스테이지에 올리는 명령어

$ git add .

커밋이 어떻게 저장되었는지 확인하는 git log 명령어

$ git log --oneline

각 브랜치의 커밋을 함께 보는 --branches 옵션

$ git log --oneline --branches

브랜치와 커밋의 관계를 좀 더 보기 쉽게 그래프 형태로 표시하는 --graph 옵션

$ git log --oneline --branches --graph

브랜치 사이의 차이점 알아보기

브랜치 사이의 차이를 확인하는 명령어

$ git log master..apple

-->master를 기준으로 apple와 비교
master 브랜치에는 없고 apple 브랜치에만 있는 커밋을 보여줌

브랜치 병합하기

서로 다른 파일 병합하기

병합하고 싶은 브랜치로 checkout한 다음에 merge 명령어로 병합하면 된다.

master, o2 브랜치가 있을 때 master 브랜치로 병합하고 싶을 때

git checout master
git merge o2

브랜치를 병합할 때 편집기 창이 열리지 않게 하려면

git merge o2 --no-edit

커밋 메시지를 추가하거나 수정하고 싶다면 병합 명령에 --edit 옵션을 사용

git merge o2 --edit

같은 문서의 다른 위치를 수정했을 때 병합하기

다른 브랜치에 같은 이름의 파일이 있을 때 양쪽 브랜치에서 수정하되 서로 다른 위치를 수정한 후 브랜치 병합한 결과

같은 문서의 같은 위치를 수정했을 때 병합하기

깃에서는 줄 단위로 변경 여부를 확인한다. 그래서 각 브랜치에 같은 파일 이름을 가지고 있으면서 같은 줄을 수정했을 때 브랜치를 병합하면 브랜치 충돌(conflict)이 발생한다.
git merge 명령어를 실행한다음 겹치는 부분은 수정하면 됨

병합이 끝난 브랜치 삭제하기

병합이 끝난 후 더 이상 사용하지 않는 브랜치는 깃에서 삭제할 수 있다. 하지만 같은 이름의 브랜치를 만들면 예전 내용을 다시 볼 수 있다.
즉, 브랜치를 삭제한다는 것은 완전히 저장소에서 없애는 것이 아니라 깃의 흐름 속에서 감추는 것이다.

브랜치 관리하기

브랜치에서 checkout과 reset의 작동 원리

git log 명령을 사용해서 커밋 해시를 확인한 다음 git reset 명령 다음에 돌아갈 커밋의 커밋 해시를 입력하면 명령을 수행하면 HEAD가 가리키고 있는 브랜치의 최신 커밋을 원하는 커밋으로 지정할 수 있고 브랜치와 연결이 끊긴 커밋은 삭제된다.

수정 중인 파일 감추기 및 되돌리기 git stash

브랜치에서 파일을 수정하고 커밋하지 않은 상태에서 급하게 다른 파일을 커밋해야 할 경우에 계속 커밋하라는 메시지가 나타날 때가 있는데 이럴 때 아직 커밋하지 않고 작업 중인 파일들을 잠시 감춰둘 수 있다.

잠시 감춰둘 때

$ git stash

감춰둔 파일을 꺼내와 계속 수정하거나 커밋할 때

$ git stash pop
profile
내가 이해하기 쉽게 쓰는 블로그
post-custom-banner

0개의 댓글