Chr*_*son 6 git formatting clang clang-format
我写了一系列git提交,代码格式很糟糕.
在我将它们推送到github之前,我想git-clang-format在每次提交时运行,以便在我的历史记录中获得格式良好的代码.
有一些组合rebase和git-clang-format这将做到这一点?
Von*_*onC 10
这看起来像是一份工作git filter-branch,可以重写你想要的提交.由于这些提交还没有被推送,改变它们的内容(以及它们的SHA1)并不是什么大问题.
除了你可以为每个重放的提交运行任何命令之外,效果类似于rebase或cherry-picking的功能.
请参阅Elliot Chance的 " 重新格式化您的代码库git filter-branch "
git filter-branch --tree-filter 'git-clang-format' -- <SHA1>..HEAD
Run Code Online (Sandbox Code Playgroud)
考虑到git-clang-format语法,您只能将其应用于每个提交中的已更改文件.
例如,对于.cpp文件:
git filter-branch --tree-filter 'git-clang-format $(\
git diff-index --diff-filter=AM --name-only $GIT_COMMIT |\
grep .cpp)' -- <SHA1>..HEAD
Run Code Online (Sandbox Code Playgroud)
2017年更新,使用Git 2.14.x/2.15(2017年第4季度),您有一个例子:
见Brandon Williams()提交2118805,提交6134de6(2017年8月14日).(由Junio C Hamano合并- -在提交a36f631,2017年9月25日)mbrandonw
gitster
Makefile:添加样式构建规则
添加
style将git-clang-format在HEAD和当前工作树之间的差异上运行的构建规则.
结果是建议更改的差异.
.PHONY: style
style:
git clang-format --style file --diff --extensions c,h
Run Code Online (Sandbox Code Playgroud)