[Git & Github] Merge & Conflict
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가 발생한 부분을 상호 협의를 거쳐 비교한 후 수정해야 함
댓글남기기