我可以用Git用两种方式修改提交历史吗?



我问这个问题是因为我正在学习Pro Git有一章改写历史$ git rebase -i HEAD~3,在所有的提交中使用$ git filter-branch——tree-filter删除一个特定的文件或文件夹。

这是我的问题:书中没有提到在所有提交的历史中通过多次签出来完成这项工作的可能性。所以我移动我的头,一个接一个的提交,我用$ git commit—modify一个接一个的修改这个特别的提交。

我知道这真的(真的!)昂贵的时间,但它真的可能(即它有效)吗?
如果是,在哪些情况下这可能是有用的?

对于所有提交,您可以使用newren/git-filter-repo,它可以重写您需要的任何内容(作者,提交消息,文件或文件内容,…)

例如,对于提交消息,使用message-callback:

消息回调与前三个回调非常相似,尽管它操作的字节串可能不止一行:

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)'

相关内容

  • 没有找到相关文章

最新更新