[Git] 브랜치(Branch) 병합하기

선영·2022년 9월 14일
0

Git&Github

목록 보기
2/9
post-thumbnail

서로 다른 파일 병합하기

1. manual-2 라는 깃 저장소 만들기

cd ~
git init manual-2 : 새로운 디렉터리 만들고 저장소 초기화
cd manual-2 : manual-2 디렉터리로 이동
ls -al : 디렉터리 리스트 확인 (.git/ 디렉터리 확인)

2. work.txt 파일 만들고 커밋하기

vim work.txt : work.txt파일 만들어 '1' 입력하고 저장
git add work.txt : 스테이지에 넣기
git commit -m "work 1" : 커밋 메세지와 함께 커밋

3. o2 라는 브랜치 만들기

git branch o2

4. main 브랜치에 master.txt파일 만들고 커밋하기

vim master.txt : master.txt 파일 만들어 'master 2'입력, 저장
git add master.txt
git commit -m "master work 2"

5. o2 브랜치로 이동(체크아웃)

git checkout o2

6. o2 브랜치에서 o2.txt 파일 만들고 커밋하기

vim o2.txt : o2.txt 파일 만들어 'o2 2' 입력하고 저장
git add o2.txt
git commit -m "o2 work2"

7. 현재 커밋상태 확인

git log --oneline --branches --graph

8. o2 브랜치의 내용을 master 브랜치로 병합하기

git checkout main : main 브랜치로 이동(체크아웃)
git merge o2 : o2를 master 브랜치로 가져와 병합

9. 브랜치가 어떻게 병합되었는지 확인


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

main 브랜치와 o2 브랜치에는 똑같이 work.txt 파일이 있음. 양쪽 브랜치에서 work.txt 파일을 수정하되 서로 다른 위치를 수정한 후 브랜치를 병합했을 때 어떤 결과가 나오는지 확인

1. manual-3 이라는 깃 저장소를 만들고, 디렉터리로 이동

git init manual-3
cd manual-3

2. 빔에서 work.txt 파일을 만들고 아래와 같이 입력

vim work.txt

3. work.txt를 스테이지에 올리고 커밋.

gid add work.txt
git commit -m "work 1"

4. o2 라는 새로운 브랜치 만들기

git branch o2

5. 양쪽 브랜치 모두에 있는 work.txt를 먼저 main 브랜치에서 수정

vim work.txt

6. main브랜치에서 수정한 work.txt 커밋

git commit -am "master work 2"

7. o2 브랜치의 work.txt 파일 수정

git checkout o2
vim work.txt

8. o2 브랜치에서 수정한 work.txt 파일 커밋

git commit -am "o2 work 2"

9. o2 브랜치를 main 브랜치에 합치기 위해 main 브랜치로 체크아웃

git checkout main

10. o2 브랜치를 main 브랜치로 끌어옴.

git merge o2

11. 병합 내용 확인

cat work.txt


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

깃에서는 줄 단위로 변경 여부를 확인.
그래서 각 브랜치에 같은 파일 이름을 가지고 있으면서 같은 줄을 수정했을 때 브랜치를 합병하면 브랜치 충돌이 발생.

1. manual-4 라는 깃 저장소 만들고, 디렉터리로 이동

git init manual-4
cd manual-4

2. 빔에서 work.txt 파일 만들기

vim work.txt

3. 방금 만든 work.txt 를 스테이지에 올리고 커밋

git add work.txt
git commit -m "work 1"

4. o2 브랜치 만들기

git branch o2

5. 양쪽 브랜치 모두에 있는 work.txt를 먼저 main 브랜치에서 수정 후 커밋

vim work.txt
git commit -am "master work 2"

6. o2 브랜치의 work.txt 파일도 수정 후 커밋

git checkout o2
vim work.txt : title 사이에 'o2 content 2' 입력, 저장
git commit -am "o2 work 2"

7. master브랜치에서 병합

git checkout main
git merge o2

  • 결과에서 충돌했다는 메세지가 발생함.
    충돌이 생긴 문서는 자동으로 병합될 수 없으므로 사용자가 직접 충돌 부분을 해결한 후 커밋해야 함.

8. 충돌이 생긴 문서를 수정하고 커밋

vim work.txt

  • <<<<<<<<< HEAD 와 가운데 가로줄(==========) 사이의 내용은 현재 브랜치, 즉 master 브랜치에서 수정한 내용. 가로줄(==========)과 >>>>>>>> o2 사이의 내용은 o2 브랜치에서 수정한 내용. 이 부분을 원하는 대로 수정하고 저장.

git commit -am "merge o2 branch"

9. 지금까지 만든 브랜치와 커밋의 관계 확인

git log --oneline --branches --graph


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

브랜치를 병합한 후 더 이상 사용하지 않는 브랜치는 깃에서 삭제할 수 있음.
이렇게 브랜치를 삭제하더라도 이 브랜치가 완전히 지워지는 것이 아니라 다시 같은 이름의 브랜치를 만들면 예전 내용을 다시 볼 수 있음.

1. 현재 저장소에 어떤 브랜치가 있는지 확인

git branch

2. 저장소의 기본 브랜치 main에서 o2브랜치 삭제하기

git checkout main : main 브랜치로 이동(체크아웃)
git branch -d o2


0개의 댓글