git是否提供一种基于文件中指定的替换自动重写git存储库历史记录的历史记录的方法.mailmap
(git help shortlog
有关详细信息,请参见)?
cd repository.git
somecommand /path/to/.mailmap # <-- ???
没有简短的git命令。一个人需要用git filter-branch --commit-filter <command> [...]
哪里<command>
改变了GIT_AUTHOR_NAME
,GIT_AUTHOR_EMAIL
,GIT_COMMITTER_NAME
并GIT_COMMITTER_EMAIL
使用变量git check-mailmap
与-c mailmap.file=/path/to/.mailmap
或-c mailmap.blob=SOMEREV:path/to/.mailmap
,例如使用.mailmap
从主分支文件,可以使用
git filter-branch --commit-filter '
R=`echo "$GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL>" | git -c mailmap.blob=master:.mailmap check-mailmap --stdin`
GIT_AUTHOR_NAME="${R% <*@*>}"
R="${R##* <}"
GIT_AUTHOR_EMAIL="${R%>}"
R=`echo "$GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>" | git -c mailmap.blob=master:.mailmap check-mailmap --stdin`
GIT_COMMITTER_NAME="${R% <*@*>}"
R="${R##* <}"
GIT_COMMITTER_EMAIL="${R%>}"
git commit-tree "$@"
' HEAD
当然,这在带有POSIX shell的系统上应该可以使用。
请注意,这不会重写Signed-off-by:
提交消息中的任何行或类似行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句