본문 바로가기

TIL

git merge + branch option(22.06.23TIL)

* merge의 기본 메커니즘

- 새로운 이슈가 발생한다면 main(master) 브랜치가 아닌 새로운 issue 브랜치를 생성한다.

    $ git checkout -b 'issue branch'

- issue 브랜치에서 작업을 진행한다.

- 중요한 문제나 에러가 발생할 시 main(master) 브랜치로 돌아와 hotfix브랜치를 하나 생성한다.

- hotfix브랜치에서 문제를 해결한 후 main 브랜치에 merge한다!

- 다시 issue 브랜치로 돌아가서 작업한다.

 

* merge의 종류

- fast forward merge

별다른 merge과정 없이 최신 커밋으로 이동하는 merge

merge완료 후 필요없는 브랜치(보통 hotfix)는 삭제한다.

브랜치중 하나가 다른 브랜치의 이전 커밋에 위치할 경우 사용 가능하다!

Fast-forward merge 개략도

- 3-way merge

분기가 나뉜 후의 브랜치들을 커밋할 때 사용한다!

분기된 커밋 두개 + 공통된 조상 커밋 하나를 이용해 새로운 merge 커밋을 만든다.

불필요한 커밋(여기서는 issue커밋)은 삭제해준다.

     git branch -d iss53

3-way merge 개략도

- 충돌

merge하는 두 브랜치에서 같은 파일의 한 부분을 동시에 수정할 때 발생한다.

git status에서 unmerged라는 메시지를 통해 확인할 수 있다!

충돌내용 해결시 ======== 위아래로 충돌한 내용을 볼 수 있다. 두 내용을 적절히 조절해서 ===== 을 지우면 충돌이 해결된다.

이후 git add > git commit을 이용해서 해결한다.

커밋 완료후 메시지는 confilcts~로 기존 커밋과 조금 다른걸 확인할 수 있다!

 

+ branch의 옵션들

  • branch 관리
    • git branch : 브랜치 목록 나열
      • *이 붙은 브랜치 : HEAD가 가리키는 녀석
      • 옵션
        • + branchname : 브랜치 생성
        • -d : 브랜치 삭제
        • -v : 커밋 메시지 포함한 목록 나열
        • —merged : merge된 브랜치 목록 나열
          • 여기서 *가 안붙은 브랜치들은 삭제해도 무방하다. 이미 merge 되었기 때문이다.
        • —no-merged : merge가 진행되지 않은 브랜치 목록 나열
          • 아직 merge하지 않은 커밋을 담고 있기 때문에 -d로 삭제 할 수 없다.
          • 삭제하고 싶다면 -D로 삭제가능하다.

'TIL' 카테고리의 다른 글

인출, 교차학습(어떻게 공부할 것인가 독후감)  (0) 2022.06.29
git branch workflow(22.06.27TIL)  (0) 2022.06.27
Github의 기능들 - branch(22.06.23 TIL)  (0) 2022.06.23
Git & Github (22.06.17 TIL)  (0) 2022.06.17
Hello megaterap!  (0) 2022.06.14