02. 깃 (Git) - [기본] 브랜치
OS | Windows 10 Home 64bit 버전 1903 (OS 빌드 18362.836) |
Git | git version 2.9.0.windows.1 |
# 시작전
이전 01.깃 (Git) - [기본] 버전 관리 에서 했던 내용이 전부 지워주세요
# 브랜치의 기본 개념
브랜치는 보통 나뭇가지라고 설명하는 데, 물의 흐름이라고 생각하면 이해하기 더 쉽다.
나뭇가지는 뻗어나가면 다시 합쳐지지 않지만 물은 상류에서 뻗어지다가 결국에는 바다로 합쳐진다.
개발 중에는 여러사람이 만들기 때문에 여러 갈래로 뻗어나가지만, 결국 서버를 띄울 때는 합쳐지기 때문이다
브랜치 | 설명 |
master (마스터) | 제품으로 출시될 수 있는 브랜치 |
develop (디벨럽) | 다음 출시 버전을 개발하는 브랜치 |
feature (퓨처) | 기능을 개발하는 브랜치 |
release (릴리즈) | 이번 출시 버전을 준비하는 브랜치 |
hotfix (핫픽스) | 출시 버전에서 발생한 버그를 수정 하는 브랜치 |
브랜치의 종류는 회사마다 위 브랜치가 더 적을수도 더 많을 수도 있다.
기본 규모가 작은 프로젝트에서는 master 와 develop 2개로 나뉘어 사용하고,
조금 더 크면 master 와 develop, tset 하는 브랜치를 사용한다.
대규모 프로젝트 같은 경우 브랜치가 그 이상일 수 있다
( 롤 이라는 게임에서는 버그발생 시 되돌리는 작업을 rollback 또는 hoffix 라고 한다 )
브랜치의 자세한 개념은 아래 사이트 참고 바람
# 01. 브랜치 만들기
$ git brunch // 브랜치 목록 보기
$ git brunch 브랜치명 // 브랜치 생성
$ git log --oneline // 깃 로그 간단히 보기
$ git checkout 브랜치명 // 브랜치 바꾸기
git log --branches // 모든 브랜치 포함한 로그
git log --oneline --branches // 모든 브랜치 포함한 간단 로그
$ git log --oneline --branch --graph // -- 모든 브랜치를 포함한 간단 로그 + 그래프
$ git log 브랜치1..브랜치2 // 브랜치1 에는 없고, 브랜치2 에 있는 브랜치2 커밋내용만 표시
#02. 브랜치 병합하기
$ git init 디렉토리명 // 디렉토리를 생성 후, 해당 디렉토리 안에서 버전관리를 한다
o2 브랜치의 내용을 master 브랜치로 병합하기
$ git merge 브랜치명
[참고] 병합할 때 메시지 지정문구를 나오지 않게하려면 아래와 같이 사용하면된다
$ git merge 브랜치명 --no-edit // <-> $ git merge 브랜치명 --edit
master 는 o2 의 커밋을 병합하면서 가장 최근 커밋으로 Merge branch o2 가 생성되었다.
병합하면서 master 는 o2 브랜치가 가지고 있던 02 work 2 커밋을 갖게되었다.
반면, o2 브랜치는 master 의 커밋 내용을 갖고있지는 않는다
같은 문서를 서로다른 위치를 수정했을 때 병합하기
- A.txt 를 master 브랜치도 수정했고, o2 라는 브랜치도 수정했을 때 상황이다
다른 브랜치에서 같은 파일을 수정한 후 merge 하면 해당 브랜치가 수정했던 내용도 반영이 된다
같은 문서의 같은 위치를 수정했을 때 병합하기
m4 를 생성해주세요 (만드는 법은 생략)
병합이 끝난 브랜치 삭제하기
삭제를 해도 다시 같은 이름으로 생성하면 이전의 내용을 재확인 가능하다
기본 브랜치는 master 이기 때문에 master 브랜치에서 작업을 해야한다
브랜치가 master 가 아닌 경우 $ git checkout master 입력 바람
$ git branch -d 브랜치명 // 브랜치 삭제
#03. 브랜치 관리하기
브랜치가 여러개일 때도 현재 브랜치가 아닌 다른 브랜치에 있는 커밋을 골라서 최신 커밋으로 지정할 수 있다
sub 에서는 mater 커밋인 'e8efe93 master work 2' 가 존재하지 않는다.
존재하지 않아도 e8efe93 을 가지고 해당커밋으로 되돌아갈 수 있다
$ git reset 브랜치별 커밋해시 // 모든 브랜치의 커밋중 원하는 커밋지점으로 돌아갈 수 있다
$ git checkout -- work.txt 로 한다면
기존의 master 커밋이였던 work.txt 내용 1,2으로 바뀐다
수행 중인 파일 감추기 및 되돌리기
브랜치에서 파일을 수정하고 커밋하지 않은 상태에서 급하게 다른 파일을 커밋해야 할 경우 사용한다
조건, 한 번은 커밋한 상태 tracked 상태여야 한다
m6 버전관리 생성 (생성방법은 생략하겠습니다)
$ git stash // 스테이징 영역 숨기기
$ git stash list // 숨긴 내역들 보기
방금 work2.txt 수정내용을 숨긴 stash는 stash@{0} 이다
work.txt 와 work2.txt 수정내용을 숨긴 stash 는 stash@{1} 로 된다.
$ git status pop // 가장 최근에 저장된 stash 가져오기 (stash 영역 에서 해당 statsh 삭제)
$ git status apply // 가장 최근에 저장된 stash 가져오기 (stash 영역에서 해당 stash 삭제 안함)
auto merging 이 된 이유는
stash 영역에 stash@{0} 은 commit work 2 이 였을 때다
하지만 현재 commit work 3 에 위치하기 때문에
내용이 달라져서 stash 에서 가져올 때 auto merging 이 이루어졌다
$ git status drop // 가장 최근에 저장된 stash 삭제
'17. Git > 기초' 카테고리의 다른 글
06. 깃 랩 (Gitlab) - 구글 이메일 계정 로그인 시 연동 문제 (3) | 2021.05.07 |
---|---|
05. 깃 (Git) - 깃 허브 (Git Hub) 협업의 기본 알아보기 (0) | 2020.08.22 |
04. 깃 (Git) - 깃 허브 (Git Hub) 로 협업하기 (0) | 2020.08.22 |
03. 깃 (Git) - 깃허브 (Git Hub) 로 백업하기 (0) | 2020.08.21 |
01. 깃 (Git) - [기본] 버전관리 (0) | 2020.08.20 |
댓글
이 글 공유하기
다른 글
-
05. 깃 (Git) - 깃 허브 (Git Hub) 협업의 기본 알아보기
05. 깃 (Git) - 깃 허브 (Git Hub) 협업의 기본 알아보기
2020.08.22 -
04. 깃 (Git) - 깃 허브 (Git Hub) 로 협업하기
04. 깃 (Git) - 깃 허브 (Git Hub) 로 협업하기
2020.08.22 -
03. 깃 (Git) - 깃허브 (Git Hub) 로 백업하기
03. 깃 (Git) - 깃허브 (Git Hub) 로 백업하기
2020.08.21 -
01. 깃 (Git) - [기본] 버전관리
01. 깃 (Git) - [기본] 버전관리
2020.08.20