본문 바로가기
프로그래밍

git merge 할때 한쪽 브랜치 내용 선택하기

by 자유코딩 2021. 5. 11.

git merge 할때 conflict 가 많이 나는 경우가 있다.

겹칠때 한쪽 브랜치를 선택하도록 미리 옵션을 줄 수 있다.

git-scm.com/book/ko/v2/Git-%EB%8F%84%EA%B5%AC-%EA%B3%A0%EA%B8%89-Merge

 

Git - 고급 Merge

Merge 작업할 때 공백 처리 옵션을 사용하면 Git이 꽤 잘해준다. 하지만, Git이 자동으로 해결하지 못하는 때도 있다. 이럴 때는 외부 도구의 도움을 받아 해결한다. 예를 들어 Git이 자동으로 해결해

git-scm.com

 

 merge 명령을 사용할 때 -Xours  Xtheirs 옵션을 추가하면 된다.
git merge -Xours targetBranch    현재 브랜치 기준으로 덮어쓰기 ( ours 우리 소스를 쓸게! use our sources)

git merge -Xtheirs targetBranch   타겟 브랜치 기준으로 덮어쓰기 ( theirs 걔네 소스를 쓸게! use thier sources)

 

 

원문 글 가져옴


Our/Their 선택하기

먼저 일반적인 “recursive” 전략을 사용하는 Merge 작업을 할 때 유용한 옵션을 소개한다. 앞에서 ignore-all-space  ignore-space-change 기능을 -X 옵션에 붙여 쓰는 것을 보았다. 이 -X 옵션은 충돌이 났을 때 어떤 한 쪽을 선택할 때도 사용한다.

아무 옵션도 지정하지 않고 두 브랜치를 Merge 하면 Git은 코드에 충돌 난 곳을 표시하고 해당 파일을 충돌 난 파일로 표시해준다. 충돌을 직접 해결하는 게 아니라 미리 Git에게 충돌이 났을 때 두 브랜치 중 한쪽을 선택하라고 알려줄 수 있다. merge 명령을 사용할 때 -Xours  Xtheirs 옵션을 추가하면 된다.

Git에 이 옵션을 주면 충돌 표시가 남지 않는다. Merge가 가능하면 Merge 될 것이고 충돌이 나면 사용자가 명시한 쪽의 내용으로 대체한다. 바이너리 파일도 똑같다.

“hello world” 예제로 돌아가서 다시 Merge를 해보자. Merge를 하면 충돌이 나는 것을 볼 수 있다.

$ git merge mundo
Auto-merging hello.rb
CONFLICT (content): Merge conflict in hello.rb
Resolved 'hello.rb' using previous resolution.
Automatic merge failed; fix conflicts and then commit the result.

하지만 -Xours  -Xtheirs 옵션을 주면 충돌이 났다는 소리가 없다.

$ git merge -Xours mundo
Auto-merging hello.rb
Merge made by the 'recursive' strategy.
 hello.rb | 2 +-
 test.sh  | 2 ++
 2 files changed, 3 insertions(+), 1 deletion(-)
 create mode 100644 test.sh
 

 

'프로그래밍' 카테고리의 다른 글

solidity 디앱개발 시작  (0) 2021.06.17
git rebase 하는 방법  (0) 2021.05.14
리액트 useMemo 사용하기  (0) 2021.05.06
개발자의 이력서 작성하기  (1) 2021.04.26
기술 면접에 자주 나오는 질문들 - 인덱스  (0) 2021.04.23

댓글