1 분 소요

1. Merge & Conflict

  • 2개의 branch를 통합하는 것
  • 현재의 branch와 merge하고자 하는 branch에서 같은 위치의 코드를 수정했을 경우 conflict 발생
  • conflict가 발생했을 경우 상의하여 코드 수정


2. 명령어

# 현재 branch에서 merge
$ git merge 이름

# merge할 때, commit 이력을 제거하고 수정된 내용만 merge
$ git merge --squash 이름

# fast-forward 방식으로 merge할 때, commit message 생성
$ git merge --no-ff 이름


3. Fast-Forward merge

- master branch에서 작업

<!-- master branch -->
<body>
  <h1>abc</h1>
</body>
$ git add .
$ git commit -m "commit message abc"


- 새로운 branch에서 작업

<!-- xyz branch -->
<body>
  <h1>abc</h1>
  <h2>xyz</h2>
</body>
$ git checkout -b xyz
$ git add .
$ git commit -m "commit message xyz"


- master branch에서 xyz branch merge 수행

$ git checkout master
$ git merge xyz
  • master branch의 HEAD가 xyz branch의 HEAD로 이동함
  • master branch의 commit message와 파일 내용이 xyz에서 작성한 내용을 포함


4. Conflict가 발생하는 merge

- master branch에서 작업

<!-- master branch -->
<body>
  <h1>abcd</h1>
  <h2>xyz</h2>
</body>
$ git add .
$ git commit -m "commit message abcd"


- 새로운 branch에서 작업

<!-- xyz branch -->
<body>
  <h1>abcdefg</h1>
  <h2>xyz</h2>
</body>
$ git checkout xyz
$ git add .
$ git commit -m "commit message abcdefg"


- master branch에서 xyz branch merge 수행

$ git checkout master
$ git merge xyz
<<<<<< HEAD
  <h1>abcd</h1>
=======
  <h1>abcdefg</h1>
>>>>>> xyz
  • master branch와 xyz branch의 commit 수가 같아 fast-forward 방식으로 merge 안됨
  • h1 태그의 내용을 동시에 각각 다른 값으로 수정함
  • conflict가 발생한 부분을 상호 협의를 거쳐 비교한 후 수정해야 함

태그: ,

카테고리:

업데이트:

댓글남기기