Merge and Conflict

eunbi kim·2024년 4월 12일
0
  • Merge
  • Conflict

Merge

main 브랜치와 dev 브랜치가 있는 상황이라고 가정하자

main 브랜치에서 txt파일에 my name is eunbi라고 쓰고 저장 -> 커밋
dev라는 브랜치를 만들고 txt파일을 my name is eunbi are you?로 수정 -> 커밋

덮어쓰지 않고 한 줄을 더 추가해주는 명령 - >>

cat >> test.txt
are you?

  • Merge Tool 설정
    Git configuration 파일 열고
git config --global -e

Git merge 설정 추가

[merge]
	tool = vscode
[mergetool "vscode"]
	cmd = "code --wait $MERGED"

Merge는 현재 위치한 branch에 다른 branch를 병합하는 명령이다.

main 브랜치에 dev 브랜치를 병합하기:

main 브랜치로 이동 후,

git merge dev

dev 브랜치에서 추가해줬던 are you?가 합쳐져서
main 브랜치에서 확인할 수 있다.

로그 확인~~

(HEAD -> main, dev)
-> main 브랜치에 modify 1이 있는 것을 확인할 수 있다.


Conflict

  • Merge Conflict
    Branch를 merge하는 과정 / push, pull하는 과정에서도 충돌이 일어날 수 있다.

dev2 브랜치를 만들고
main 에서 파일 수정하고 커밋하고

dev2 브랜치에서도 같은 파일을 수정하고 커밋한 다음

merge를 하면,
양쪽이 같은 파일의 같은 부분을 수정했기 때문에, 어떻게 합쳐야 할지 모르니까
충돌이 발생한다.

<해결법>

직접 서로 다른 부분을 수정해줘서 같게 만들어주어야 충돌을 해결하고 merge할 수 있다.

  • MergeTool 실행
    Conflict 발생된 파일들이 차례로 열린다.
git mergetool

difftool이랑 같은 기능이다.
main브랜치에는 zero로 수정되어 있고
dev2에는 base로 수정되어 있는데,

둘 중 더 적절한 코드를 선택하여
그 부분만 남기고 지워주면 된다.(Diff 표시 부분도 삭제)

base부분만 남기고 지워준 후 저장하였다.

  • Conflict 해제
    git add + git commit을 하면
git add test.txt
git commit

Commit message 가 뜬다

저장 후 닫아주면 완료

0개의 댓글