기타

[git]책 - 팀개발을 위한 git, github 시작하기(4일차)

변기원 2023. 1. 21. 21:42

chapter 6,7에서는 cli를 통해 지금까지 한 것들을 연습한다.

스테이지에 올리고 커밋하고 푸시, 풀 하는 것들은 기존에 하던 것들이라 진도가 좀 빨랐다.

 

다른 것들은 생략하고 3-way병합했을 때 병합커밋이 생기는데, 이것을 깔끔하게 관리할 수 있는 rebase를 연습해 보면서

지금까지 배운 것들을 복습할 수 있다.

일단 리베이스 실습을 하려면 base를 기준으로 merge 했을 때 충돌이 나는 상황을 만들어야 되니까

위와 같은 상황을 만들어줘야겠다.

b414e2c커밋을 base로 해서 featrue1에서는 두 개의 커밋이 생겼고 그사이에 main브랜치에 하나의 커밋이 생긴 상황이다.

그전에 배운 방법은 feature1에서 main을 병합하면서 충돌을 해결하고 병합커밋을 새로 만든 뒤에 다시 main으로 

합치는 방법이었다. 이것을 3-way merge라고 한다.

두 개의 브랜치 커밋과 공통조상의 커밋, 총 3개의 커밋이 관여한다고 하여 그렇게 부른다고 한다.

 

(실습하다가 시행착오를 좀 겪어서 커밋이름이 다릅니다)

feature1 브랜치에 있는 두개의 커밋을 main의 가장 최신 커밋 위로 올릴 것이다.

feature1에서 git rebase main

충돌이 생겨서 에러가 나고 vscode로 수동으로 충돌을 해결한 뒤에 변경사항을 스테이지에 올린다.

git add .

충돌을 해결했으니 git rebase --continue 입력

또 충돌 있음. git status를 찍어서 충돌이 생긴 파일을 확인하고 vscode로 충돌 해결

다시 스테이지에 올리자 git add .

그리고 다시 git rebase -- continue입력

이젠 다 됐다. feature1 브랜치에서 git log graph를 찍어보면 커밋 1,2가 3위에 올라가서 붙어있다.

준비가 다 됐으니 main으로 가서 머지하면 된다.

git checkout main

git merge feature1

성공 git log --graph 찍어보면

기존에 main브랜치에서 수정한 커밋 3이 base가 되어 커밋 1, 커밋 2가 붙어있다.

소스트리로 확인해 보면 병합커밋이 따로 생기지 않고 이렇게 이쁘게 일렬로 생겼다. rebase실습완료!