Merge : branch와 반대되는 개념으로 branch를 다시 병합해주는 기능
Conflict(충돌) : Merge를 하는 과정에서 양쪽이 같은 코드부분을 고쳤을 때 시스템이 이를 사용자한테 알려서 해결하도록 도와주는 기능
git_ws % cd merge_project # 이동
merge_project % cat > test.txt # txt 만들고 내용 입력
my name is noma. # Ctrl+d 두번해서 저장
merge_project % git add test.txt # add
merge_project % git commit -m "create" test.txt # commit
[main 7adac9f] create
1 file changed, 1 insertion(+)
create mode 100644 test.txt

merge_project % git checkout -b dev # dev 만들고 이동까지
Switched to a new branch 'dev'
(base) nomaefg@nomaefgui-MacBookPro merge_project %
cat >> test.txt # >> 로 한줄 더 추가
are you? # 추가하려는 내용, Ctrl + d 두번해서 저장
(base) nomaefg@nomaefgui-MacBookPro merge_project %
cat test.txt # 내용보기
my name is noma. # 내용
are you? # 추가된 내용
(base) nomaefg@nomaefgui-MacBookPro merge_project %
git commit -m “modify 1" test.txt # commit
[dev 134aaf5] modify 1
1 file changed, 1 insertion(+)
Git Configuration 파일 열기
git config --global -e
-> vscode를 닫아야 다음 명령문을 넣을 수 있다
[merge]
tool = vscode
[mergetool "vscode"]
cmd = "code --wait $MERGED"
git merge <branchname>
merge_project % git checkout main # main으로
Switched to branch 'main'
Your branch is ahead of 'origin/main' by 1 commit.
(use "git push" to publish your local commits)
merge_project % git branch
dev
* main
merge_project % git merge dev
Updating 7adac9f..134aaf5
Fast-forward
test.txt | 1 +
1 file changed, 1 insertion(+)
Conflict 해결은
1. Conflict 코드들을 다 없애고,
2. 남길 코드만 남겨서 저장해준 다음에
3. add, commit 을 해주면 됨
충돌 상황 만들기
1. Main Branch 에서 파일 수정 - Hello, noma 만들기
2. Main Branch 이름 수정 noma > zero
3. Branch 만들어서(dev2) 이름 수정 noma > base
4. merge
merge_project % git branch dev2
-> 하나는 base, 하나는 zero 라서 충돌함
-> vscode 실행됨
(맞는 부분만 남기고, 저장, 닫기)
(vscode 실행됨)
(vscode 실행되면 저장, 닫기)
(hello, base. 로 바뀜)
• 위치 : git_ws 폴더 하위
• 이름 : conflict_project
• Default Branch 이름 확인 : main or master
• [master] 에서 conflict.txt 생성 후 commit : This is
• [main] 에서 Branch 생성 후 이동 : dev
• [dev] 에서 conflict.txt 수정 후 commit : This is merge test.
• [main] 에서 [dev] Merge
• Default Branch 이름 확인 : main or master
• [master] 에서 conflict.txt 생성 후 commit : This is
• [main] 에서 Branch 생성 후 이동 : dev
• [dev] 에서 conflict.txt 수정 후 commit : This is merge test.
• [main] 에서 [dev] Merge
• [main] 에서 Branch 생성 (이동 X) : dev2
• [main] 에서 conflict.txt 수정 후 commit : This is conflict test.
• [dev2] 에서 conflict.txt 수정 후 commit : This is log test.
• [main] 에서 [dev2] Merge : Conflict 발생 확인
• [main] 에서 Branch 생성 (이동 X) : dev2
• [main] 에서 conflict.txt 수정 후 commit : This is conflict test.
• [dev2] 에서 conflict.txt 수정 후 commit : This is log test.
• [main] 에서 [dev2] Merge : Conflict 발생 확인
• Conflict 해결 : This is conflict test.
• Log 로 확인
(This is conflict test. 만 남기고 모두 지움 > 저장 > 닫기)
(vscode 자동으로 실행됨, 저장 > 닫기)