git clone
후
git checkout -b feature/wooyoungkim
브랜치를 생성하고 들어가서
wooyoungkim.md
파일을 만들어 "commit 메세지 3개를 세팅해보겠다." (작업 다하고 add
commit
후 여기서부터 시작!!!)
- 작업 브랜치에서 commit 메세지를 3개 남겨놓은 상태이다.
git checkout main
git pull origin main
:
다시 main
브랜치로 이동해서 리모트의 main
을 pull
받는다.
git checkout feature/wooyoungkim
:
pull
을 받은 뒤 수정사항이 있었던 브랜치로 이동
지금까지는 conflict를 해결한다고 git merge main
이었지만
rebase 시키기 위해 git rebase -i main
을 입력한다.
- 해당 작업 브랜치에서 했었던 commit 메세지 3개가 잘 들어왔다.
첫번째 메시지만pick
으로, 나머지 메시지는s
로 변경해준다.(이게squash
!!)
- 이때 윈도우 기준
c
+w
를 눌러주면 insert모드로 가지 않고도 바로 수정이 가능하다.
:wq
로 저장 후 나오기
프로젝트 중에는 여기서 conflict가 발생하게 된다.
conflict해결 후 add
-> git rebase --continue
✅ add 이후 commit
을 안하고 넘어가는 이유
add 이후 git commit -m
으로 새로 커밋을 남기면 리베이스 이후 불필요한 커밋이 추가된다!
add
이후 바로 git rebase --continue
를 진행시
머지가 필요하다면서 기존 커밋창으로 넘어가지므로
거기서 :wq
저장하고 나오면 추가되는 커밋이 없이 리베이스가 진행된다
- 이제 여기서 commit 메시지 3개를 하나로 합치는 작업을 진행하면 된다.
나는 commit 메시지를 "squashed commit"으로 수정해보겠다.
- 이렇게 한 브랜치의 여러 커밋 메시지를 하나로 합치는 작업을 하고
git push origin feature/wooyoungkim -f
-f 옵션을 사용하여 force push를 진행한다.
rebase
할 때는conflict
해결 후add
git rebase --continue
입력!