feat: git retime 改为在 --start-date/--end-date 区间内均匀分布提交
- 新增 --end-date:提交按比例铺满 [start-date, end-date],第 i 个提交 落在第 i×天数÷提交数 天,提交远少于天数时也不会堆在第一天 - 移除 --per-day / --day-gap:原先的“每天一个、日期顺延”语义不直观 - 只给 --start-date 时集中在该日;--end-date 需配合 --start-date 且不早于它 - 同一天的多条提交仍按顺序落在 21:00-23:00 之间 - 文档与预览文案同步为区间语义
This commit is contained in:
+20
-18
@@ -23,8 +23,8 @@ kopsc git retime 2026-10-01 2026-10-15 --window 20:00-22:30 # 换一个时间
|
||||
kopsc git retime 2026-10-01 2026-10-15 --seed 42 # 固定随机种子,结果可复现
|
||||
kopsc git retime 2026-10-01 2026-10-15 --no-push --yes # 只改本地,不推送
|
||||
|
||||
# 连日期一起重排:从 2026-11-01 起,每天 2 个提交,日期间隔 3 天
|
||||
kopsc git retime 2026-10-01 2026-10-15 --start-date 2026-11-01 --per-day 2 --day-gap 3
|
||||
# 连日期一起重排:把提交均匀分布到 2026-11-01 至 2026-11-15
|
||||
kopsc git retime 2026-10-01 2026-10-15 --start-date 2026-11-01 --end-date 2026-11-15
|
||||
```
|
||||
|
||||
### 时间怎么分配
|
||||
@@ -39,29 +39,32 @@ kopsc git retime 2026-10-01 2026-10-15 --start-date 2026-11-01 --per-day 2 --day
|
||||
- 如果某天提交太多、21:00–23:00 放不下所有间隔,会**自动压紧为窗口内均匀分布**,
|
||||
预览表中该行标注「⚠ 已压缩间隔」。
|
||||
|
||||
### 重排日期(--start-date)
|
||||
### 重排日期(--start-date / --end-date)
|
||||
|
||||
加 `--start-date <日期>` 后,范围内的提交按原顺序**重新分配日期**,从该日开始:
|
||||
加 `--start-date` 后,范围内的提交按原顺序**重新分配日期**,均匀铺在
|
||||
`[--start-date, --end-date]` 之间(不给 `--end-date` 时就只有起始那一天)。
|
||||
|
||||
```bash
|
||||
kopsc git retime 2026-10-01 2026-10-15 --start-date 2026-11-01 # 每天一个,连续日期
|
||||
kopsc git retime 2026-10-01 2026-10-15 --start-date 2026-11-01 --per-day 3 # 每天最多 3 个
|
||||
kopsc git retime 2026-10-01 2026-10-15 --start-date 2026-11-01 --day-gap 2 # 日期间隔 2 天
|
||||
kopsc git retime 2026-10-01 2026-10-15 --start-date 2026-11-01 # 全部集中在 11-01
|
||||
kopsc git retime 2026-10-01 2026-10-15 --start-date 2026-11-01 --end-date 2026-11-15 # 铺满 15 天
|
||||
```
|
||||
|
||||
```text
|
||||
窗口: 21:00-23:00(从 2026-11-15 起重排,每天 1 个,间隔 2 天)
|
||||
窗口: 21:00-23:00(在 2026-11-01 至 2026-11-15 之间均匀分布)
|
||||
|
||||
提交 原时间 新时间 主题
|
||||
f89cdd9 2026-10-01 01:00:00 2026-11-15 21:09:21 c1
|
||||
e06e019 2026-10-01 02:00:00 2026-11-17 21:03:30 c2
|
||||
99f29b6 2026-10-01 03:00:00 2026-11-19 21:03:20 c3
|
||||
f89cdd9 2026-10-01 01:00:00 2026-11-01 21:18:12 c1
|
||||
e06e019 2026-10-01 02:00:00 2026-11-03 21:09:49 c2
|
||||
99f29b6 2026-10-01 03:00:00 2026-11-06 21:13:52 c3
|
||||
f25f7c3 2026-10-01 04:00:00 2026-11-08 21:06:54 c4
|
||||
8abca35 2026-10-01 05:00:00 2026-11-11 21:02:31 c5
|
||||
bea6552 2026-10-01 06:00:00 2026-11-13 21:10:34 c6
|
||||
```
|
||||
|
||||
- 不给 `--per-day` 时**每天一个**提交;给了则一天最多放这么多个,放满换到下一个日期。
|
||||
- `--day-gap` 是相邻两个提交日期间隔的天数,默认 1(连续日期)。
|
||||
- 重排后每条提交仍落在该日的 21:00–23:00 内,同日多条严格递增。
|
||||
- `--per-day` / `--day-gap` 必须配合 `--start-date`,否则报错提示。
|
||||
- **按比例铺开**:第 i 个提交(从 0 开始)落在第 `i × 天数 ÷ 提交数` 天。
|
||||
提交远少于天数时也是均匀铺满区间,不会全部堆在第一天。
|
||||
- 同一天放多个提交时,它们仍按顺序落在该日 21:00–23:00 之间,严格递增。
|
||||
- `--end-date` 必须配合 `--start-date`,且不能早于 `--start-date`。
|
||||
|
||||
### 预览示例
|
||||
|
||||
@@ -106,9 +109,8 @@ git reset --hard refs/kopsc-backup/main-20261101-093000
|
||||
| `--seed N` | 随机种子,同一批提交用同一种子得到相同结果 |
|
||||
| `--remote <名称>` | 强推到哪个远程,默认取唯一远程 |
|
||||
| `--branch <名称>` | 改写的分支,默认当前分支 |
|
||||
| `--start-date <YYYY-MM-DD>` | 重排日期:从该日起按顺序重新分配提交日期(默认保留原日期) |
|
||||
| `--per-day N` | 重排时每天最多放 N 个提交,默认 1;需配合 `--start-date` |
|
||||
| `--day-gap N` | 重排时相邻提交日期间隔 N 天,默认 1;需配合 `--start-date` |
|
||||
| `--start-date <YYYY-MM-DD>` | 重排日期的起始日(默认保留每个提交的原日期) |
|
||||
| `--end-date <YYYY-MM-DD>` | 重排的截止日期,提交均匀分布到 `[--start-date, --end-date]`;不给则只用起始那一天 |
|
||||
| `--no-push` | 只改写本地,不推送 |
|
||||
| `-y`, `--yes` | 确认执行(没有它只预览) |
|
||||
|
||||
|
||||
Reference in New Issue
Block a user