如何修复Git中不在分支的bad date错误提交?交互式变基无效
游离Git提交的badDate错误修复方案
1. 把游离提交挂到临时分支
先切换到目标提交:
git checkout c60d23
创建临时分支来承载这个提交:
git branch temp-fix
2. 交互式rebase修改日期
执行交互式rebase,这次提交会出现在编辑列表里:
git rebase -i 'c60d23^'
把列表中对应c60d23提交的pick改成edit,保存退出。
接下来修改提交日期:
- 改成当前系统时间:
git commit --amend --no-edit --date="$(date)"
- 手动指定日期(格式示例:
2024-05-20 14:30:00):
git commit --amend --no-edit --date="2024-05-20 14:30:00"
完成修改后继续rebase流程:
git rebase --continue
3. 处理另一个错误提交(60707e7)
如果这个提交同样是游离状态,重复上面的步骤即可;如果它属于某个分支,直接在对应分支上执行交互式rebase修改。
4. 清理临时分支(可选)
改完切回主分支,删除临时分支:
git checkout main # 替换成你的主分支名称 git branch -D temp-fix
批量修复工具推荐
用git filter-repo可以批量修改提交元数据,适合多游离提交的场景,示例命令:
git filter-repo --commit-callback ' if commit.hexsha == "c60d23": commit.author_date = commit.committer_date = "2024-05-20T14:30:00+08:00" '
⚠️ 注意:使用git filter-repo前一定要备份仓库,它会重写整个提交历史。
内容的提问来源于stack exchange,提问作者grayaii
相关产品推荐
相关产品推荐

