我问这个问题是因为我正在学习Pro Git有一章改写历史$ git rebase -i HEAD~3,在所有的提交中使用$ git filter-branch——tree-filter删除一个特定的文件或文件夹。
这是我的问题:书中没有提到在所有提交的历史中通过多次签出来完成这项工作的可能性。所以我移动我的头,一个接一个的提交,我用$ git commit—modify一个接一个的修改这个特别的提交。
我知道这真的(真的!)昂贵的时间,但它真的可能(即它有效)吗?
如果是,在哪些情况下这可能是有用的?
对于所有提交,您可以使用newren/git-filter-repo
,它可以重写您需要的任何内容(作者,提交消息,文件或文件内容,…)
消息回调与前三个回调非常相似,尽管它操作的字节串可能不止一行:
git-filter-repo --message-callback ' if b"Signed-off-by:" not in message: message += b"nSigned-off-by: Me My <self@and.eye>" return re.sub(b"[Ee]-?[Mm][Aa][Ii][Ll]", b"email", message)'