git merge
- # git merge <현재 checkout branch에 merge할 branch>
- master 1, 2, 5
- exp 1, 2, 3, 4
- exp branch를 master branch로 merge
- # git checkout master
- master branch로 checkout
- # git merge exp
- # git checkout master
- master : 1, 2, 3, 4, 5
- exp: 1, 2, 3, 4
- # git branch -d newbranch
- 브랜치 삭제
Branch 테스트
- master branch에 test.txt를 add/commit 실행
- exp라는 branch를 생성하고 test2.txt add/commit 실행
- exp branch에는 2개의 파일(test.txt / test2.txt)라는 파일이 존재함과 동시에 commit 내역이 2개있음을 확인 할 수 있다
- master branch로 checkout한 후 확인
- master branch에는 test.txt 파일만 존재하며 commit내역도 1개만(test.txt) 존재함을 확인 할 수 있다
- checkout중인 branch내에서 새로운 branch를 만들면 현재 checkout중인 branch를 기준으로 새로운 브랜치가 분기됨을 확인 할 수 있다
- # git log --branches --decorate -- graph
- master branch의 최신 commit은 5이며 1, 2, 5 commit을 가짐
- exp branch의 최신 commit은 4이며 1, 2, 3, 4 commit을 가짐
- # git log --branches --decorate -- graph --oneline
- # git log master..exp
- master branch에는 없고 exp branch에만 있는 commit을 보여줌
- # git log exp..master
- exp branch에는 없고 master branch에만 있는 commit을 보여줌
fast forward merge
- hotfix 커밋(C4)을 master 커밋(C2)으로 merge하려는 경우
- # git checkout master
- # git merge hotfix
- 현재 브랜치(master)가 가리키는 커밋(C2)이 Merge할 브랜치(hotfix)의 조상인 경우
- 새로운 commit을 생성하지 않고 merge를 진행
3-way merge
- # git checkout master
- # git merge iss53
- 현재 브랜치가 가리키는 커밋(C4)이 Merge할 브랜치(iss53/C5)의 조상이 아닌경우
- merge commit을 생성
2 way merge vs 3 way merge
person 1 | Base | person 2 | 2 way merge | 3 way merge |
A | A | conflit | ||
B | B | B | B | B |
1 | C | 2 | conflit | conflit |
D | D | conflit |
'기타 > git' 카테고리의 다른 글
git tag (0) | 2021.07.23 |
---|---|
git stash (0) | 2021.07.16 |
gistory .git 디렉토리 분석 (0) | 2021.07.11 |
git / github (0) | 2021.07.11 |
git 기본 명렁어 (0) | 2021.07.11 |