1

X我希望使用源代码格式化工具(如go fmtor )重建/重新设置 Git 分支中的所有提交indent

我希望工作流程大致包括创建一个新分支master并迭代以下内容,其中$_包括以下提交X

git cherry-pick $_
go fmt ...
git commit -a --amend

或者甚至可能

git cherry-pick -n $_
go fmt ...
git cherry-pick --continue

不过,我没想到会像那样-n一起--continue玩。此外,一个人应该自然而然地在完成时做出go fmt承诺。Xgo diff X new

但是,此过程有许多步骤可能出错,例如-a寻求更改原始提交中未更改的文件、go fmt混淆 Git 的修补程序、Git 更改提交日期等。

这些都不是特别麻烦,但如果一个快速工具或更简单的工作流程更干净,那么我很想知道它。

4

1 回答 1

1

但如果一个快速工具或更简单的工作流程更干净地做到这一点,那么我很想知道它。

正如Joseph K. Strauss在评论中提到的那样,git filter-branch应该足够了,再加上go fmt使用三点符号

git filter-branch --tree-filter 'go fmt ...'

git filter-branch您可以在“ -放弃对一系列提交中的一组文件的更改”的过滤器分支上阅读(更多)内容。

该命令将针对所有本地分支运行,并将更改历史记录(因为将为每个修改的提交生成新的 SHA1)。
可能需要Agit push --force将新历史发布到其上游仓库:请警告其他合作者,让他们重置本地仓库。

于 2015-01-02T15:56:12.790 回答