在 TortoiseGit 中使用 `rebase` 修改历史提交(如修改提交信息、合并提交或删除提交)的步骤如下:
---
### **一、修改最近一次提交**
1. **操作**:
- 右键项目 → **TortoiseGit** → **提交(C)**
- 勾选 **"Amend commit"**(修正提交)
- 修改提交信息或文件 → 点击 **提交**
---
### **二、修改历史提交(交互式变基)**
#### **步骤 1:启动交互式变基**
1. 打开日志:
- 右键项目 → **TortoiseGit** → **显示日志(S)**
2. 选择基准点:
- 在提交列表中 **右键选中要修改的提交的父提交**(例如:想修改提交A,则选中A之前的提交)
- 选择 **"Rebase interactively onto this..."**
#### **步骤 2:编辑变基操作**
1. 在弹窗的提交列表中:
- 找到目标提交,将 **"pick"** 改为其他操作:
- **"reword"**:修改提交信息
- **"edit"**:暂停以修改文件内容
- **"squash"**:合并到前一个提交
- **"drop"**:删除提交
- 点击 **"Start Rebase"**
#### **步骤 3:按需修改**
- **修改提交信息(reword)**:
直接在新窗口中编辑信息 → 点击 **提交**。
- **修改文件内容(edit)**:
1. 变基暂停时,修改工作区的文件
2. 右键项目 → **TortoiseGit** → **提交(C)**
3. 勾选 **"Amend commit"** → 提交更改
4. 返回日志窗口 → 右键 → **Continue Rebase**
#### **步骤 4:完成变基**
- 所有操作完成后,点击 **"Finish Rebase"**
- 若出现冲突:
- 解决冲突 → 标记为已解决 → 继续变基
---
### **三、推送修改后的历史**
由于历史被重写,需强制推送:
1. 右键项目 → **TortoiseGit** → **推送(P)**
2. 勾选 **"Force: Overwrite existing refs"**(强制覆盖)
3. 确认推送
> ⚠️ **警告**:强制推送会覆盖远程历史,确保分支未被他人协作使用!
---
### **关键操作图示**
| **操作** | **位置/选项** |
|------------------------|----------------------------------|
| 启动交互式变基 | 日志中右键父提交 → "Rebase interactively..." |
| 修改提交类型 | 提交列表中将 "pick" 改为 "reword/edit/squash/drop" |
| 提交修改后的文件 | 暂停时使用 **Amend commit** 提交 |
| 强制推送 | 推送对话框勾选 **"Force"** 选项 |
---
### **常见问题**
1. **变基中断如何继续?**
- 日志窗口右键 → **Continue Rebase** 或 **Abort Rebase**(取消)。
2. **如何合并多个提交?**
- 在交互式变基中,将提交的操作改为 **"squash"**(保留提交信息)或 **"fixup"**(丢弃提交信息)。
3. **误操作如何撤销?**
- 使用 `git reflog` 找到变基前的提交 → 重置分支到该提交(需命令行)。
---
通过以上步骤,你可以在 TortoiseGit 中安全地修改历史提交记录。操作前建议备份分支!