【发布时间】:2018-02-13 09:01:33
【问题描述】:
我们有一个包含数千个提交的 repo,它使用了一种非常旧的代码约定,我们希望用默认的 Microsoft 替换。最简单的方法是仅在最新提交上运行代码格式化工具,但这样我们就失去了“责备”并且历史变得更难追踪。 这可以通过在每次提交时运行代码格式化工具(在我们的例子中为 https://github.com/dotnet/codeformatter)来实现,从而保留更改历史,以及我们应该使用什么版本的 filter-branch?
编辑:原来我要使用的工具在某些提交上崩溃了,所以这就是为什么 filter-branch 对我不起作用并且没有对提交应用任何更改
【问题讨论】:
-
这意味着当您回顾历史查看当时代码库的状态时,您会得到一个误导性的画面。这对我来说似乎有问题。
-
你可能可以——尽管你的 git 历史将被完全重写。您拥有的任何标签都将无效,并且必须在您继续进行时重新制作......
-
这个想法只是重新格式化代码,以便更容易阅读,而不影响功能@fredrik 是的,你是对的,标签需要重建,但似乎值得麻烦
-
请注意,
git filter-branch的工作原理是将每次提交(--tree-filter物理上如此)提取到一个临时目录中,不是正常工作-树目录。您必须将重新格式化程序指向临时目录(由git format-branch运行的进程的当前目录)。