git rebase
[git diff tree](https://texonom.com/git-diff-tree-5e2f1348ca214f7292dff49c3ee1cc93) [git merge](https://texonom.com/git-merge-95abeb10722641dc840af3504d3d95b7) 


check-pick을 여러 번 실행과 개념적 같다
히스토리가 깔끔해지지맘 그만큼 소실 커밋별로 해야해서 귀찮
히스토리 수정이므로 master에서 rebase하는건 피하고 master 로 merge 이전에 main을 rebase
즉, **feat fast-forward merge가 가능해진**
### VSCode interactive setup
```typegit config --global core.editor "code --wait"git rebase -i main```


### 다수의 커밋 메시지 수정
- `amend e` - 커밋 수정
- `drop d` - 커밋 삭제
- `squash s` - 커밋 합치기
- `pick p` - use commit
- `reword r` - use and edit
- `fixup f` - discard log and s
- `exec x` - exec run command
```typegit rebase -i HEAD~3```




### 기준 브랜치 옮기기
- 브랜치 분기 시점을 그쪽 최신으로 맞추어 현재 커밋들을 그곳으로 rebase한다는 의미
```typegit rebase master```



### 시간 현재로
`git rebase -i` 를 했다면, `git rebase --continue` 도 항상 따라와야합니다.
시간을 돌리고, 다시 풀어주고
```typegit rebase --continue```



### rebase 취소
```typegit rebase --abortgit rebase --edit-todo```


### merge confilict flow
```typegit rebase --abort # revertgit rebase --continue # it is like make new barnch#  i dogit add .git commit -m blabla```


> [Git Interactive Rebase, Squash, Amend and Other Ways of Rewriting History](https://thoughtbot.com/blog/git-interactive-rebase-squash-amend-rewriting-history)

> [Git Rebase & Squash in VS Code using GitLens Supercharge](https://www.youtube.com/watch?v=3o_01F04bZ4&t=62s)

> [git rebase로 commit 합치기](https://cjh5414.github.io/git-rebase/)

> [Take advantage of Git rebase](https://about.gitlab.com/blog/2022/10/06/take-advantage-of-git-rebase)






