고의로 git에 충돌을 일으키다
고의로 git에 충돌을 일으키다
개요
git의 학습 중 하나로서 나는 고의로 충돌을 일으키는 프로그램을 배우고 싶다.
컨디션
Git 2.13.1
Windows8
Bitbucket
디테일
이번에 우리는 두 개의 현지 창고를 제작하여 각각 테스트 A 지점, 테스트 B 지점을 만들었다.
만들어서 진행하고 싶어요.
충돌이 발생한 파일을 원격 창고로 복사
로컬 테스트 A 지점을 사용하여 충돌을 일으킨 파일을 원격 창고로 복사합니다.
우선 서류 제작부터 시작한다.
command(testa 분기)touch test{1..10}.txt
ls
명령 프롬프트 표시(test A 분기)test1.txt test2.txt test4.txt test6.txt test8.txt
test10.txt test3.txt test5.txt test7.txt test9.txt
이 파일들을push로 하기 때문에dd에서commiit를 진행해야 합니다.
command(testa 분기)git add .
git commit -m testファイルを大量に追加
git log -n1
명령 프롬프트 표시(test A 분기)commit a78cdfde3bc11fb69de3e40760f6018722a5a582 (HEAD -> testA)
Author: kashiwara <------------>
Date: Sun Oct 8 13:04:24 2017 +0900
testファイルを大量に追加
commiit 나왔으니 push 해 주세요.
command(testa 분기)git push origin testA
비트bucket(원격)에는push의testA 분기가 있기 때문에 통합됩니다.
따라서 기본 파일은 원격 창고의 마스터에 통합되었습니다.
테스트 B 분기로 파일 가져오기
다음은testB지점에서pull이방금testA지점과합병한master지점을원합니다.
command(testB 분기)git pull origin master
명령 프롬프트 표시(testB 분기)remote: Counting objects: 4, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 4 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (4/4), done.
From -----------------
* branch master -> FETCH_HEAD
7c1b2da..140f412 master -> origin/master
Merge made by the 'recursive' strategy.
test1.txt | 0
test10.txt | 0
test2.txt | 0
test3.txt | 0
test4.txt | 0
test5.txt | 0
test6.txt | 0
test7.txt | 0
test8.txt | 0
test9.txt | 0
10 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 test1.txt
create mode 100644 test10.txt
create mode 100644 test2.txt
create mode 100644 test3.txt
create mode 100644 test4.txt
create mode 100644 test5.txt
create mode 100644 test6.txt
create mode 100644 test7.txt
create mode 100644 test8.txt
create mode 100644 test9.txt
이렇게 되면 테스트 A 지점과 테스트 B 지점은 완전히 같은 파일을 가진 상황이 된다.
각 지점을 변경한 후commiit 진행
테스트 A 지점을 변경합니다.
command(testa 분기)echo "oeiua" > test1.txt
echo "あ" > test2.txt
rm -rf test4.txt
test1.txt에서 oeuia,test2를 입력합니다.txt에 텍스트를 입력한 후 남기고test4를 삭제합니다.
내가 dd 이거 변경해서 commiit 진행할게.
command(testa 분기)git add .
git commit -m test1-2.txtを書き換えtest4.txtを消した
git log -n1
명령 프롬프트의 출력(testa 분기)commit 2db675eefb2623f4332cf3fbfab270c6bf80adf3 (HEAD -> testA)
Author: kashiwara <------------>
Date: Sun Oct 8 13:56:24 2017 +0900
test1-2.txtを書き換えtest4.txtを消した
다음은 테스트 B 지점을 변경합니다.
command(testB 분기)echo "aiueo" > test1.txt
rm -rf test{2..4}.txt
test1.txt에 aiueo,test2를 입력하세요.txt에서test4까지.txt가 삭제되었습니다.
내가 dd 이거 변경해서 commiit 진행할게.
command(testB 분기)git add .
git commit -m test1.txtを書き換えtest2-4.txtを消した
git log -n1
명령 프롬프트 표시(testB 분기)commit 3c1b2ce408b915d630255a9bf065333c6e951f07 (HEAD -> testB)
Author: kashiwara <------------>
Date: Sun Oct 8 13:36:17 2017 +0900
test1.txtを書き換えtest2-4.txtを消した
그렇다면 합의를 위해 준비를 마쳤다.
충돌이 일어나다
테스트 A 지점의push가 변경되었습니다
명령 프롬프트 표시(test A 분기)git push origin testA
아까처럼 원격으로 합병해.
테스트 B 지점pull 변경으로 충돌을 일으키고 싶습니다.
command(testB 분기)git pull origin master
그리하여충돌이 일어났다!!
git status 명령을 클릭하여 확인해 보세요.
command(testB 분기)git status
명령 프롬프트 표시(testB 분기)On branch testB
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)
Unmerged paths:
(use "git add/rm <file>..." as appropriate to mark resolution)
both modified: test1.txt
deleted by us: test2.txt
no changes added to commit (use "git add" and/or "git commit -a")
both modified: 편집 내용에 따른 충돌
자체 분기(testB 분기)로 삭제된 파일이 충돌합니다.
라는 뜻이다.
이런 충돌을 해결합시다.
충돌 해결
충돌하는 테스트 1.cat 명령으로 txt를 보십시오.
command(testB 분기)cat test1.txt
명령 프롬프트 표시(testB 분기)<<<<<<< HEAD
aiueo
=======
oeuia
>>>>>>> 709ad198fbeb86aa3e3f903ab55f73dc19f71fbc
vim을 사용하여 aiueo만 저장합니다.
command(testB 분기)vi test1.txt
이렇게 하면 편집 내용으로 인한 충돌이 해결된다.
이어서 파일 삭제로 인한 충돌을 해결합니다.
이번,test2.txt를 남기고 싶습니다.
나머지는 정상적으로dd.(new file로 추가됨)
command(testB 분기)git add .
git status
command(testB 분기)On branch testB
All conflicts fixed but you are still merging.
(use "git commit" to conclude merge)
Changes to be committed:
new file: test2.txt
이 정도면 됐어.
command(testB 분기)git commit -m "コンフリクトをなおした"
git log -n1
명령 프롬프트 표시(testB 분기)commit 565196b735da345df82a5f0a6b005534ad054917 (HEAD -> testB)
Merge: 3c1b2ce 709ad19
Author: kashiwara <------------>
Date: Sun Oct 8 14:35:13 2017 +0900
コンフリクトをなおした
충돌을 수정하여commiit를 진행할 수 있습니다.
그게 다야.
Reference
이 문제에 관하여(고의로 git에 충돌을 일으키다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Kashiwara/items/7999faacaed9404dbb86
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
touch test{1..10}.txt
ls
test1.txt test2.txt test4.txt test6.txt test8.txt
test10.txt test3.txt test5.txt test7.txt test9.txt
git add .
git commit -m testファイルを大量に追加
git log -n1
commit a78cdfde3bc11fb69de3e40760f6018722a5a582 (HEAD -> testA)
Author: kashiwara <------------>
Date: Sun Oct 8 13:04:24 2017 +0900
testファイルを大量に追加
git push origin testA
git pull origin master
remote: Counting objects: 4, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 4 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (4/4), done.
From -----------------
* branch master -> FETCH_HEAD
7c1b2da..140f412 master -> origin/master
Merge made by the 'recursive' strategy.
test1.txt | 0
test10.txt | 0
test2.txt | 0
test3.txt | 0
test4.txt | 0
test5.txt | 0
test6.txt | 0
test7.txt | 0
test8.txt | 0
test9.txt | 0
10 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 test1.txt
create mode 100644 test10.txt
create mode 100644 test2.txt
create mode 100644 test3.txt
create mode 100644 test4.txt
create mode 100644 test5.txt
create mode 100644 test6.txt
create mode 100644 test7.txt
create mode 100644 test8.txt
create mode 100644 test9.txt
echo "oeiua" > test1.txt
echo "あ" > test2.txt
rm -rf test4.txt
git add .
git commit -m test1-2.txtを書き換えtest4.txtを消した
git log -n1
commit 2db675eefb2623f4332cf3fbfab270c6bf80adf3 (HEAD -> testA)
Author: kashiwara <------------>
Date: Sun Oct 8 13:56:24 2017 +0900
test1-2.txtを書き換えtest4.txtを消した
echo "aiueo" > test1.txt
rm -rf test{2..4}.txt
git add .
git commit -m test1.txtを書き換えtest2-4.txtを消した
git log -n1
commit 3c1b2ce408b915d630255a9bf065333c6e951f07 (HEAD -> testB)
Author: kashiwara <------------>
Date: Sun Oct 8 13:36:17 2017 +0900
test1.txtを書き換えtest2-4.txtを消した
git push origin testA
git pull origin master
git status
On branch testB
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)
Unmerged paths:
(use "git add/rm <file>..." as appropriate to mark resolution)
both modified: test1.txt
deleted by us: test2.txt
no changes added to commit (use "git add" and/or "git commit -a")
cat test1.txt
<<<<<<< HEAD
aiueo
=======
oeuia
>>>>>>> 709ad198fbeb86aa3e3f903ab55f73dc19f71fbc
vi test1.txt
git add .
git status
On branch testB
All conflicts fixed but you are still merging.
(use "git commit" to conclude merge)
Changes to be committed:
new file: test2.txt
git commit -m "コンフリクトをなおした"
git log -n1
commit 565196b735da345df82a5f0a6b005534ad054917 (HEAD -> testB)
Merge: 3c1b2ce 709ad19
Author: kashiwara <------------>
Date: Sun Oct 8 14:35:13 2017 +0900
コンフリクトをなおした
Reference
이 문제에 관하여(고의로 git에 충돌을 일으키다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Kashiwara/items/7999faacaed9404dbb86텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)