繁体   English   中英

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

[英]Can I change the commit history in two ways using Git?

我问这个问题是因为我正在研究Pro Git书,有一章Rewriting History ,它解释了如何更改最后一次提交$ git commit --amend ,更改多个提交消息$ git rebase -i HEAD~ 3 、使用$ git filter-branch --tree-filter删除所有提交中的特定文件或文件夹。

我的问题是:这本书没有提到通过沿着所有提交历史进行多次结帐来完成这项工作的可能性。 所以我移动我的 HEAD,一个一个提交,我用$ git commit --amend一个一个地改变这个特定的提交。

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

对于所有提交,您可以使用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)'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM