Branch
프로젝트의 독립적인 작업 공간. 브랜치를 사용하면 같은 코드베이스에서 여러 개발자가 동시에 작업할 수 있으며, 서로의 작업에 영향을 주지 않고도 다양한 기능을 개발하거나 버그를 수정할 수 있다.
Branch가 필요한 이유
사용 설명서의 버전 관리를 Git으로 할 때, 제품 출시 전에 사용 설명서를 작성했지만 제품 출시 후 고객사마다 추가로 요구하는 내용이 다를 수 있다. 즉, 고객사마다 다른 사용 설명서가 필요하다.
master(main) 브랜치
깃에서 자동으로 만드는 기본 브랜치
브랜치 기능
분기(branch) : master 브랜치에서 새 브랜치를 만듦

병합(merge) : 새 브랜치에 있던 파일을 master 브랜치에 병합

브랜치 만들기
1. manuals 디렉터리 만들기
mkdir manuals
2. VS Code 위로 드래그해서 작업 폴더 추가하기
3. 깃 초기화하기
git init -- Git 저장소를 초기화하는 명령어로, 현재 디렉터리에 새로운 Git 저장소를 생성
4. work.txt 파일 만들고, 'content 1' 입력한 후 저장하기
5. 스테이지에 올리고 커밋
6. git log로 커밋 확인하기

* HEAD -> master의 의미
HEAD가 master 브랜치를 가리킴
(HEAD -> master)가 붙은 커밋이 가장 최신 커밋
7. 두 번 더 스테이지 & 커밋하기
8. git log로 커밋 확인하기

master 브랜치가 가장 최신 커밋인 'work 3'를 가리키고 있다.
새 브랜치 만들기
1. git branch로 현재 브랜치 확인
git branch -- 현재 존재하는 브랜치를 확인하는 명령어
git branch 브랜치명 -- 새로운 브랜치를 생성하는 명령어
2. git branch로 apple 브랜치 만들고 확인

3. git log로 커밋 확인하기

apple 브랜치가 추가된 것을 볼 수 있다.
새로운 커밋 추가하기
1. ms와 google 브랜치도 추가하기
2. git log로 커밋 확인하기

ms와 google 브랜치가 추가된 것을 볼 수 있다.
3. work.txt 파일을 수정 후 스테이지 & 커밋
4. git log로 커밋 확인하기

최신 커밋인 'main work 4'는 master 브랜치에만 적용된다.
apple과 google, ms 브랜치는 아직 'work 3' 커밋 상태.
즉 새로 만든 커밋은 현재 브랜치(master)에만 적용되고 나머지 브랜치에는 적용되지 않는다.
커밋 전환하기
1. git switch를 사용해 apple 브랜치로 전환하기
git switch 교체할 브랜치명 -- 브랜치를 전환하는 명령어
2. git log로 커밋 확인하기
--oneline : 커밋 기록을 간단하게 요약해서 보여줌

apple 브랜치를 만들기 전의 master 브랜치 커밋은 apple 브랜치에 그대로 유지된다.
apple 브랜치에서는 'work 3' 커밋이 가장 최신 커밋이다.
브랜치에서 커밋하기
1. apple 브랜치에서 커밋하기
work.txt 'apple content 4'를 추가한 후 저장
apple.txt 파일을 만들고 'apple content 4'입력 후 저장
work.txt와 apple.txt를 'apple work 4' 메시지와 함께 커밋

2. git log로 커밋 확인하기

현재 작업 중인 브랜치는 apple 브랜치이고, 'apple work 4'가 가장 최신 커밋인 것을 볼 수 있다.
브랜치와 커밋의 관계 알아보기
1. 최신 커밋 확인하기
--branches : 모든 브랜치의 커밋 기록을 보여주는 역할

현재 브랜치는 apple 브랜치, 최신 커밋은 'apple work 4'
master 브랜치의 최신 커밋은 'main work 4'
ms, google의 최신 커밋은 'work 3'
2. 그래프 형태로 확인하기
--graph : 커밋 히스토리를 시각적으로 나타내는 역할, 커밋 간의 관계를 트리 구조로 표시

apple 브랜치의 최신 커밋은 'apple work 4', master 브랜치의 최신 커밋은 'main work 4'
'apple work 4'와 'main work 4'의 부모 커밋을 찾아가면 'work 3'
> apple 브랜치에서는 'work 3' 커밋 이후에 'apple work 4'를 커밋했다는 것을 알 수 있다.
> master 브랜치에서는 'work 3' 커밋 이후에 'main work 4'를 커밋했다는 것을 알 수 있다.
브랜치 간의 차이점 살펴보기
1. master에는 없고 apple에만 있는 커밋 확인하기
git log 브랜치 1.. 브랜치 2 -- 브랜치 1에는 없고 브랜치 2에만 있는 커밋 확인 명령어

2. apple에는 없고 master에만 있는 커밋 확인하기

브랜치 병합하기
1. manual-2 디렉터리 생성 후 VS Code에 작업 폴더 추가
2. git init 명령으로 깃 저장소 만들기
3. work.txt 파일 생성 후 1 입력해서 저장
4. 스테이지 후 'work 1' 메시지와 함께 커밋

5. git branch o2 명령으로 o2 브랜치 만들기
6. master 브랜치에 master.txt 만들고 'main 2' 입력한 후 저장
7. 스테이지 후 'work 2' 메시지와 함께 커밋

8. git switch o2 명령으로 o2 브랜치 전환
9. o2.txt 파일 생성 후 2 입력 후 저장
10. 스테이지 후 'o2 work 2' 메시지와 함께 커밋
11. git log로 커밋 확인하기

현재 브랜치는 o2
o2 브랜치에서 추가한 커밋 'o2 work 2'
master 브랜치에서 추가한 커밋 'work 2'
master, o2 브랜치가 모두 가지고 있는 커밋 'work 1'
서로 다른 파일 병합하기
1. main 브랜치로 전환하기
2. git merge 명령 다음에 병합할 브랜치명 입력
git merge 병합할 브랜치명 -- 현재 브랜치와 다른 브랜치를 병합하는 명령어
3. 자동으로 병합 메시지가 나타남. :wq! 입력하면 메시지 창 종료가능
:wq! -- 저장 후 종료
:q! -- 저장하지 않고 종료
4. 메시지 창을 닫으면 병합 커밋이 자동으로 만들어짐

한 문서의 다른 부분을 수정했을 때 병합하기
1. manual-2 디렉터리 생성 후 VS Code에 작업 폴더 추가
2. git init 명령어로 Git 저장소 생성
3. work.txt 파일 만들고 다음과 같이 입력

4. 스테이지 후 'work 1' 메시지와 함께 커밋
5. o2 브랜치 만들기
6. master 브랜치에서 work.txt 수정하기
7. 스테이지 후 'main work 2' 메시지와 함께 커밋

8. o2 브랜치로 전환 후 work.txt 파일 수정하기
9. 스테이지 후 'o2 work 2' 메시지와 함께 커밋
10. master 브랜치로 전환
11. git merge 명령으로 o2 브랜치 병합

수정한 부분이 다르므로 자동으로 병합된다.
한 문서의 같은 부분을 수정했을 때 병합하기
1. manual-4 디렉터리를 만들고 VS Code에 작업 폴더 추가하기
2. git init 명령어로 Git 저장소 생성
3. work.txt 파일 만들고 다음과 같이 입력

4. 스테이지에 올린 후 'work 1'메시지와 함께 커밋
5. o2 브랜치 생성
6. master 브랜치에서 work.txt 수정하기
7. 스테이지 후 'main work 2' 메시지와 함께 커밋
8. o2 브랜치 이동 후 work.txt 수정하기
9. 스테이지 후 'o2 work 2' 메시지와 함께 커밋
10. master 브랜치로 전환 후 git merge 명령어로 병합
> 병합 과정 중에 충돌 발생

11. 병합 편집기에서 확인 클릭 후 내용 수정

12. 수정한 work.txt를 스테이지에 올리고 'merge o2 branch' 메시지와 함께 커밋
13. git log 명령어로 브랜치와 커밋 관계 확인하기

병합이 끝난 브랜치 삭제하기
git branch 명령에 -d 옵션과 삭제할 브랜치 이름 사용
git branch -d 삭제할 브랜치명 -- 브랜치를 삭제하는 명령어
브랜치를 삭제하더라도 나중에 같은 이름으로 브랜치를 만들면 이전 작업 내용이 남아 있게 된다.
cherry-pick으로 병합하기
체리픽 병합은 다른 브랜치의 특정 커밋만 가져와 병합한다.
1. cherry-pick 디렉터리 생성 후 VS Code에 추가
2. git init 명령어로 Git 저장소 생성
3. init.txt 파일 생성 후 저장
4. 스테이지에 올린 후 'init' 메시지와 함께 커밋
5. topic 브랜치 생성
6. master 브랜치에서 m1, m2 버전 만들기
$ touch m1; git add m1; git commit -m "m1"
$ touch m2; git add m2; git commit -m "m2"

7. git log 명령어로 확인하기

8. topic 브랜치로 전환한 후 t1, t2, t3 버전 만들기


9. git log 확인하기

10. topic 브랜치의 t2 버전을 master 브랜치로 병합하기 위해 topic 브랜치의 t2 캐시 복사
11. master 브랜치로 전환한 후 git cherry-picker 다음에 복사한 캐시를 붙여 넣기
12. master 브랜치의 파일 확인

t2 파일이 병합되어 있음을 볼 수 있다.
'DevOps > Github' 카테고리의 다른 글
| [Github] VS Code에서 GUI 방식으로 사용하기 (0) | 2024.10.14 |
|---|---|
| [Github] Github에서 다른 사람과 소통하기 (1) | 2024.10.14 |
| [Github] Github로 협업하기 (0) | 2024.10.11 |
| [Github] Git으로 버전 관리하기 (0) | 2024.10.10 |
| [Github] Github 시작하기 (5) | 2024.10.10 |