最近我需要使用'git am'向我的仓库应用16个补丁,并且我小心翼翼地为每一个使用了'--committer-date-is-author-date'。但是,我还需要调整每个补丁的提交信息,并且在完成这16个补丁后,我发现'commit --amend'推高了它们每个的提交者时间戳。
最终我学到了一个方法可以一次性解决我的问题:
git rebase --committer-date-is-author-date <SHA-of-commit-prior-to-patches>
但在尝试使用'filter-branch'解决我的问题之前,未能成功。我很好奇我做错了什么。以下是我的尝试:
git filter-branch --env-filter \
'export GIT_COMMITTER_DATE=$GIT_AUTHOR_DATE' SHA1..HEAD
这里是结果:
Rewrite 1c52265d1f06bd67e0fed1c09e1e75249424476e (1/15)/usr/lib/git-core/git-filter-branch: 1: export: -0500: bad variable name
我做错了什么?在env-filter中,我不允许设置/导出一个变量作为另一个变量的值吗?请注意,我从一种有条件地更改GIT_AUTHOR_DATE和GIT_COMMITTER_DATE的方法进行了改进,如果$GIT_COMMIT匹配特定SHA,则这两个GIT_*_DATE变量都将被设置为常量字符串,而不是另一个变量。
export GIT_COMMITTER_DATE=@1405671090 -0500
(自纪元以来的秒数和时区偏移量),这是无效的 shell 语法。 - knittl