Remote Repository 생성
merge_project 생성
Local Repository 에 Clone
git_ws 폴더에 복제
파일 추가 후 저장
main branch : My name is noma.
cd merge_project
cat > test.txt
my name is noma.
(ctrl+d)
git add test.txt
git commit -m "create" test.txt
[main 7adac9f] create
1 file changed, 1 insertion(+)
create mode 100644 test.txt
merge_project % git checkout -b dev
Switched to a new branch 'dev'
(base) cat >> test.txt
are you?
(base) cat test.txt
my name is noma.
are you?
(base) git commit -m “modify 1" test.txt
[dev 134aaf5] modify 1
1 file changed, 1 insertion(+)
(?) 파일 생성 후 add 없이 바로 commit ?
git config --global -e
[merge]
tool = vscode
[mergetool "vscode"]
cmd = "code --wait $MERGED"
현재 위치한 Branch 에 다른 Branch 를 병합
git merge <branchname>
Main Branch 로 이동
merge_project % git checkout 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
Dev Branch Merge하기
merge_project % git merge dev
Updating 7adac9f..134aaf5
Fast-forward
test.txt | 1 +
1 file changed, 1 insertion(+)
Log : Merge 결과 확인
: modify 1이 dev에만 있었는데 main에도 생김
merge_project % git log
commit 134aaf56a25bb5489cc27836b9059320ae8de9f4 (HEAD -> main, dev)
Author: zerobasegit <zerobase.git@gmail.com>
Date: Sun Nov 7 22:25:09 2021 +0900
modify 1
commit 7adac9f91b4967c1bb465cc27b84e6382b6d0749
Author: zerobasegit <zerobase.git@gmail.com>
Date: Sun Nov 7 22:24:14 2021 +0900
create
commit ad973bd1399ff8264b0e8ebb9a1065bfc6d26906 (origin/main, origin/HEAD)
Author: zerobasegit <93780130+zerobasegit@users.noreply.github.com>
Date: Sun Nov 7 21:23:22 2021 +0900
Initial commit
Branch 를 Merge 하는 과정에서 충돌이 날 수 있음
혹은 Push, Pull 하는 과정에서도 충돌이 일어날 수 있음
Main Branch 에서 파일 수정
Hello, noma 를 만들자.
Conflict Test 를 위한 Dev2 Branch 생성
Hello, noma 를 카피한다. (이동은 하지 않습니다.)
Main Branch 에서 파일 수정
Hello, zero.
Dev2 Branch 에서 파일 수정
Hello, base.
Main Branch 에서 Dev2 Merge
이때 양쪽이 같은 파일의 같은 부분을 수정했기 때문에 Conflict 발생
$ git merge dev2
Auto-merging test.txt
CONFLICT (content): Merge conflict in test.txt
Automatic merge failed; fix conflicts and then commit the result.
$ git mergetool
Merging:
test.txt
Normal merge conflict for 'test.txt':
{local}: modified file
{remote}: modified file
VSCode 에서 Conflict 파일 수정
Main Branch 와 Dev2 Branch 의 Diff 를 <<<<, ====, >>>> 로 표시
둘 중 맞는 코드를 선택하여 수정하고 저장.(Diff 표시 부분도 삭제)
Conflict 해제
git add + git commit
$ git add test.txt
$ git commit
Commit Message 저장 후 완료
Git Log 로 확인
1.Local Repository 생성
• 위치 : git_ws 폴더 하위
• 이름 : conflict_project
~/Documents/git_ws
$ mkdir conflict_project
$ cd conflict_project/
$ git init
2.Merge 실습
• Default Branch 이름 확인 : main or master
• [master] 에서 conflict.txt 생성 후 commit : This is
~/Documents/git_ws/conflict_project (master)
$ cat > conflict.txt
This is
$ git add conflict.txt
$ git commit -m 'create' conflict.txt
• [main] 에서 Branch 생성 후 이동 : dev
$ git checkout -b dev
• [dev] 에서 conflict.txt 수정 후 commit : This is merge test.
$ cat > conflict.txt
This is merge test.
$ git add conflict.txt
$ git commit -m 'modify 1' conflict.txt
• [main] 에서 [dev] Merge
$ git checkout master
$ git merge dev
3.Conflict 상황 만들기
• [main] 에서 Branch 생성 (이동 X) : dev2
$ git branch dev2
• [main] 에서 conflict.txt 수정 후 commit : This is conflict test.
$ cat > conflict.txt
This is conflict test.
$ git commit -m 'modify -conflict' conflict.txt
• [dev2] 에서 conflict.txt 수정 후 commit : This is log test.
$ git checkout dev2
$ cat > conflict.txt
This is log test.
$ git commit -m 'modify -log' conflict.txt
• [main] 에서 [dev2] Merge : Conflict 발생 확인
$ git checkout master
$ git merge dev2
Auto-merging conflict.txt
CONFLICT (content): Merge conflict in conflict.txt
Automatic merge failed; fix conflicts and then commit the result.
4.Conflict 해결
• Conflict 해결 : This is conflict test.
• Log 로 확인
$ git mergetool
Merging:
conflict.txt
Normal merge conflict for 'conflict.txt':
{local}: modified file
{remote}: modified file
$ git add conflict.txt
$ git commit
$ git log
$ code .
-> source control
🔥제로베이스 데이터 사이언스 취업스쿨🔥