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

 

결과: exp branch를 master branch로 merge

  • 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 브랜치 비교

  • # 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

+ Recent posts