2. 병합과 충돌

재능없는 개발자·2023년 2월 8일
0
git branch 

git brach는 내가 어디있는지 확인하는 명령어이다.

git branch newBranch

git branch "새로운 브랜치명"을 하면 새로운 브랜치를 생성한다.

newBranch를 만들었지만, 이동하지 않았기 때문에 아직 Head는 master에 있는 것을 확인할 수 있다.

git checkout newBranch

checkout을 하면 해당 branch로 head를 이동시킨다.

git checkout -b newBranch

-b 옵션을 붙히면, 브랜치를 만들면서 이동할 수 있다.

Fast Foward Merge

touch newFile.txt
git add .
git commit -m "새로운 파일 생성"

이제 newBranch에서 새로운 파일을 생성하고 commit을 날렸다.

지금 Head는 체크된 a475655에 있는 것을 확인할 수 있다.

git checkout master

이제 다시 master branch로 이동한다.

head가 master를 가리킨다.

git merge newBranch

이제 master와 newBranch를 merge로 합쳐준다.
이렇게 하면 master에도 newBranch에서 생성한 파일이 들어있는 것을 확인할 수 있다. 이렇게 master에선 추가적인 작업이 없었기 때문에 master와 newBranch만 가지고 병합을 하는 것을 fast-forward merge라고 한다.

Three Way Merge

git checkout newBranch2

newBranch2를 만들어준다.

git checkout master
touch newFile2.txt
git add .
git commit -m "새 파일2 생성"

우선 master branch에서 newFile2.txt라는 새로운 파일을 만들고 commit한다.

그럼 이렇게 된 것을 확인할 수 있다.

git checkout newBranch2
git touch newFile3.txt
git add .
git commit -m "새 파일3 생성"

그 다음 방금 만들 branch로 가서 또다른 새 파일을 만든다.

이번에는 newBranch2와 master가 서로 다른 가지로 뻗어가는 것을 볼 수 있다.

git checkout master
git merge newBranch2

이제 master로 돌아와 병합해주면

두개의 branch가 하나로 합쳐진 것을 확인할 수 있다.
이렇게 서로다른 변경점이 있는 두개의 branch가 세곳(master, newBranch2, newBranch2생성하기전)를 기준으로 합쳐서 merge하는 것을 three way merge라고 한다.

충돌

버튼 만들었다

master에서 버튼 만들었다라는 문구가 적혀있는 파일을 만들고 업로드 하였다.

그리고 commit하면 이렇게 된다.

git checkout -b modifyButton

그 다음 새로운 branch를 만들며 이동한다음,

버튼 수정했다

방금 생성한 문구를 수정해준다.

그 다음 commit하면 이런 상태가 된다.

git checkout master

그 다음 master로 돌아온다.

버튼 나도 수정했다

그 다음 문구를 master에서도 다시 수정한다음

git add .
git commit -m "버튼 나도 수정했다!"

이제 commit을 날리면,

이렇게 되는데 이상태에서 merge를 하면 어떻게 될까?

이렇게 된다 두개의 branch에서 같은 파일을 수정했기 때문이다

=== 을 기준으로 위에 걸 쓸 것인지 아래 것을 쓸 것 인지 정하면 된다.

master거는 무시하고, modifyButton걸로 가기로 정했다면 이렇게 된다. 같은 파일은 건드리지 말자!

profile
https://www.youtube.com/watch?v=__9qLP846JE

0개의 댓글