이번 시간에는 이전에 배운 branch
와 merge
를 실습해보는 시간을 가져보도록 하겠습니다. 이전의 #18 Git - Branch 수련 이 글을 먼저 보고 오시는걸 추천합니다.
현재 branch
상황입니다. 메인으로는 master
를 쓸것이고 iss53
이라는 branch
를 새로 만들것입니다.
일단 f10.txt
파일을 만들어 주고 내용을 Hello World
로 해줍니다.
이후 add
와 commit
을 해줍니다.
이 때 주의해야할 점은 먼저 iss53
branch
를 만들어 버리면 iss53
에서는 f10.txt
가 적용되지 않기 때문에 파일을 먼저 만드셔야 합니다.
이제 git branch iss53
을 통해 새로 만들어 줍니다.
따라서 현재 상황은 위 그림과 같습니다.
이후 iss53
으로 이동해줍시다.
master
에서 파일을 먼저 만든 후에 iss53
을 만들었으므로
f10.txt
파일이 존재하는 모습입니다.
이후 f10.txt
파일의 내용을 수정해주고 add
해줍니다.
commit
도 해줍니다.
따라서 현재 상황은 다음과 같습니다.
이후 hotfix
라는 새로운 branch
를 만들어주고 checkout
으로 이동해줍니다.
f10.txt
파일의 내용은 master
에 있던 내용이 있습니다.
이후 iss53
에서 했던거랑 똑같이 파일을 수정하고 add
하고 commit
해줍니다.
따라서 현재 상황은 위와 같습니다.
이제 merge
를 할 차례입니다.
git checkout master
로 이동해준후 git merge hotfix
로 병합해줍니다.
이때 유심히 봐야할 것은 Fast-forwad
입니다.
즉 현재 상태는 위와 같습니다.
master
에서 새로운 commit
이 생성된게 아니라 hotfix
와 같은 것을 가리키고 있는 것입니다.
git log --branches --graph --decorate
를 실행시
위 그림과 완전 똑같은 형태가 되어있습니다.
상단의 초록색 글자의 master
는 hotfix
와 동일한 위치에 존재합니다.
이후 hotfix
는 필요없으니 제거해줍니다.
이후 다시 iss53
으로 돌아와서 f10.txt
를 한번더 수정하고 add
합니다.
이때 commit
를 하겠습니다.
그러면 현재 상황은 위 그림과 같습니다.
하지만 이때 git
에서는 Fast-forward
병합을 하지 못합니다. 바로 옆에 있지 않기 때문입니다.
따라서 git
에서는 가장 가까운 조상을 찾은 뒤에 Three-way Merge
방법을 통해 병합합니다.
이후 master
로 이동한 후에 iss53
을 병합해줍니다. 하지만 오류가 발생했습니다.
이때는 다시 master
에서 add
와 commit
을 다시 해주면 됩니다.
따라서 현재 상황은 이렇습니다.
위 그래프와 옆으로 보면 똑같습니다.
git log --branches --graph --decorate --oneline
명령까지 실행하면 더 간력하게 병합된 모습을 확인 할 수 있습니다.
여기까지 실습을 마치겠습니다.