Git, Github

생활코딩 : GIT -5. 브랜치 : merge, conflict

식초 2020. 9. 2. 12:03

새로운 저장소 만들기

git init manual-merge1

cd manual-merge

nano work.txt > 1 내용 추가

git add work.txt

git commit -m "work 1" : work 1버전 만들어짐

 

git branch o2 : 브랜치 o2를 만든다

nanno master.txt  > 2 내용 추가

git add master.txt

git commit -am "work 2"

 

git commit --amend : 이미 커밋한 버전도 바꿀 수 있다. > master work 2 로 바꾼다

 

git checkout o2 : o2브랜치로 간다

nano o2.txt > o2 2 내용 추가

git add o2.txt

git commit -m "o2 work 2"

 

 

 

 

Merge 하는 방법 (파일명 다를 때)

: o2브랜치를 master브랜치병합한다 (방향 : o2 ->master)

 

git checkout master : 먼저 마스터 브랜치로 간다

git merge o2 : 땡겨오고 싶은 o2브랜치를 merge명령을 한다

 

새로운 커밋 =o2 커밋과 master커밋을 조상으로 한다

 

git reset --hard ecb6bc5 : 과거로 돌아간다, 리셋하고 싶은 버전 커밋(여기선 master work 2)을 취소한다

이렇게 뜬다. 여기서부터 다시 연습을 하길 권장한다.

 

 

 

 

Merge 하는 방법 (파일명 같을 때) = 파일 안에서 이름이 다른 것을 병합했을 때

새로운 저장소 만들기

git init manual-merge2

cd manual-merge

nano work.txt > # title / content /// # title / content (/는 띄어쓰기다)

git add work.txt

git commit -m "1"

 

git branch o2 만든다

nano work.txt >  # title / master content /// # title / content  윗쪽 내용만 수정한다

git commit -am "master work 2" : 버전을 만든다

 

git checkout o2

nano work.txt > # title / content /// # title / o2 content 아래쪽 내용만 수정한다

git commit -am "o2 work 2" : 버전을 만든다

 

o2 내용을 master 내용 병합한다 (방향 : o2 ->master)

git checkout master : 먼저 마스터 브랜치로 간다

git merge o2 : 현재브랜치 master로 머지 한다는 내용 > 확인 후 나오기

cat work.txt : work.txt가 어떻게 바뀌었는지 확인

파일 병합할 때 같은 파일이라도 다른 부분을 병합했다면 알아서 수정된다 (깃의 엄청난 기능)

 

 

 

 

Merge 하는 방법 (같은 파일, 같은 부분)

새로운 저장소 만들기

git init manual-merge3

cd manual-merge3

nano work.txt > # title / content /// # title / content

git add work.txt

git commit -m "work 1"

 

현재 상태 (HEAD -> master, o2) work 1 을 가리키고 있음

 

nano work.txt > # title / content /master/ # title / content  중간에 master라고 썼다

git commit -am "master work 2"

 

git checkout o2 : o2 브랜치로 간다

nano work.txt > # title / content /o2/ # title / content  중간에 o2라고 썼다

git add work.txt

git commit -m "o2 work 2"

 

master로 o2의 내용을 병합해서 새로운 내용을 만든다

git checkout master

git merge o2 > CONFLICT , Automatic merge failed 충돌났다

nano work.txt > 가보면 아래처럼 되어있다

======= : 구분자 (충돌이 일어났다, master와 o2가!)

<<<<<<< HEAD : (구분자를 기준으로 위쪽은) master이다

<<<<<<< o2 : (구분자를 기준으로 아래쪽은) o2 이다

자동으로 합치는 것을 못하니 주인님이 정해달라는 뜻이다.

 

이럴땐 ,로 연결해준다.

 

git add work.txt : 깃아 내가 충돌을 해결했다

git commit > 자동으로 여태까지 과정에 대한 것들이 나온다