如何复制Git提交的作者与日期但不复制提交信息?
解决方案:拆分提交后保留原作者与日期,自定义提交信息
核心方法:直接指定作者和日期
不用依赖git commit -c/-C带来的提交信息干扰,直接提取原提交的作者与日期,在提交或修改提交时指定即可。
步骤1:获取原提交哈希
在交互式变基暂停后,原提交的哈希可以通过git rebase --show-current-patch查看,或者提前记好变基前的原提交哈希(记为OLD_COMMIT)。
方法一:创建新提交时直接应用原作者与日期
当你用git add -p暂存好拆分后的内容后,执行以下命令创建提交:
git commit --author="$(git log -1 --format="%an <%ae>" OLD_COMMIT)" --date="$(git log -1 --format="%ci" OLD_COMMIT)"
执行后会打开编辑器让你输入自定义的提交信息,完全不会带入原提交的内容,同时作者和日期会自动设置为原提交的信息。
方法二:修改已创建的提交(作者为自己的情况)
如果已经创建了提交,想要修改它的作者和日期但保留现有提交信息,执行:
git commit --amend --no-edit --author="$(git log -1 --format="%an <%ae>" OLD_COMMIT)" --date="$(git log -1 --format="%ci" OLD_COMMIT)"
--no-edit参数会跳过编辑器,直接保留当前提交的信息,只更新作者和日期。
进阶:配置Git别名简化操作
为了日常重复使用和方便团队成员上手,可以在Git配置文件(~/.gitconfig或项目内的.git/config)中添加以下别名:
[alias] # 创建新提交时使用指定提交的作者和日期 commit-as = !f() { git commit --author="$(git log -1 --format="%an <%ae>" "$1")" --date="$(git log -1 --format="%ci" "$1")"; }; f # 修改现有提交为指定提交的作者和日期,保留原提交信息 amend-as = !f() { git commit --amend --no-edit --author="$(git log -1 --format="%an <%ae>" "$1")" --date="$(git log -1 --format="%ci" "$1")"; }; f
配置完成后,使用起来会非常简单:
- 创建新提交:
git commit-as OLD_COMMIT - 修改已提交:
git amend-as OLD_COMMIT
内容的提问来源于stack exchange,提问作者donquixote
相关产品推荐
相关产品推荐

