feat: 新增 git.time 修改最后一次提交时间命令

This commit is contained in:
2026-11-03 23:20:16 +08:00
parent f76bb10cae
commit 9d0b957125
3 changed files with 262 additions and 8 deletions
+48 -3
View File
@@ -2,16 +2,61 @@
> 返回 [README.md](README.md)
按日期范围批量调整提交时间,然后强推。用于把一批提交的时分秒统一挪到某个时间段。
按日期范围批量调整提交时间,或修改最后一次提交的时间,然后强推。
```bash
kopsc git retime 2026-10-01 2026-10-15 # 预览:会改哪些提交、改成什么时间
kopsc git retime 2026-10-01 2026-10-15 --yes # 确认后真正改写并强推
kopsc git time 2026-11-05 22:30:00 # 预览:修改最后一次提交的时间
kopsc git time 2026-11-05 22:30:00 --yes # 确认后修改并强推
```
> ⚠️ **这会改写历史并强推**,提交 SHA 会全部变化。默认只预览、不改任何东西,必须显式加 `--yes` 才会执行。
> ⚠️ **这会改写历史并强推**,提交 SHA 会变化。默认只预览、不改任何东西,必须显式加 `--yes` 才会执行。
## 改写提交时间(git.retime)
## 修改最后一次提交时间(git.time)
`kopsc git time <时间>` 把本地最后一次提交的作者时间和提交时间改为用户指定的时间,然后强制推送。
```bash
kopsc git time 2026-11-05 22:30:00 # 预览
kopsc git time 2026-11-05 22:30:00 --yes # 修改并强推
kopsc git time 2026-11-05 22:30:00 --no-push # 只改本地,不推送
```
### 时间格式
时间格式必须是 `yyyy-MM-dd HH:mm:ss`,如 `2026-11-05 22:30:00`。格式不正确会报错。
### 预览示例
```text
修改最后一次提交的时间
提交: abc1234 feat: 新增功能
当前时间: 2026-11-05 10:15:30
修改为: 2026-11-05 22:30:00
将强推到 origin/main
这是破坏性操作,会改变提交历史。加 --yes 确认执行。
```
### 实现细节
同时修改 Author Date 和 Committer Date,确保远程页面(如 Gitea)显示正确时间。
### 选项
| 选项 | 说明 |
| --- | --- |
| `<时间>` | 必填,格式 `yyyy-MM-dd HH:mm:ss` |
| `--remote <名称>` | 强推到哪个远程,默认取唯一远程 |
| `--branch <名称>` | 操作的分支,默认当前分支 |
| `--no-push` | 只改写本地,不推送 |
| `-y`, `--yes` | 确认执行(没有它只预览) |
## 批量改写提交时间(git.retime)
`kopsc git retime <开始日期> <结束日期> [选项]` 把该日期范围内(含两端)的提交,
**保留各自的原日期**,只把时分秒重排到 **21:00–23:00** 之间,然后 `git push --force-with-lease`。