merge and rebase
bash
git rebase/merge
#CONFLICT -> fix conflicts
git rebase/merge --continue
#? rebase set of patches onto a new base
git rebase
#merges branch_name into current branch
git merge (branch_name)
#rebase server -> client
git rebase --onto master (server client 范围)git rebase -i 交互式变基
基本命令
bash
git rebase -i <commit>
# 或
git rebase -i HEAD~N<commit>:要从哪个提交之后开始变基。HEAD~N:表示从当前 HEAD 向上 N 个提交开始。
常见操作关键词
| 命令 | 含义说明 |
|---|---|
pick | 使用该提交(默认行为) |
reword | 修改该提交的说明 |
edit | 暂停变基,允许你修改该提交内容 |
squash | 将该提交与上一个提交合并,并编辑说明 |
fixup | 与 squash 类似,但跳过提交说明编辑 |
drop | 删除该提交 |
示例操作
bash
git rebase -i HEAD~3编辑器中可能出现:
pick 1234abc Fix typo
pick 5678def Add feature X
pick 9abc012 Refactor code你可以修改为:
pick 1234abc Fix typo
squash 5678def Add feature X
reword 9abc012 Refactor code含义:
- 第二个提交将合并到第一个提交中
- 第三个提交保留,但会要求修改提交说明
变基过程中的操作
遇到冲突时:
bash# 解决冲突后 git add <filename> git rebase --continue放弃变基:
bashgit rebase --abort跳过当前提交(不推荐):
bashgit rebase --skip
使用场景
- 合并多个杂乱提交为一个逻辑清晰的提交(squash)
- 修改提交说明(reword)
- 删除误提交(drop)
- 调整提交顺序(上下移动行)