我可以撤消 Black 对我的 Python 代码所做的格式样式更改吗?

Can I undo the formatting style changes that Black makes to my Python code?

Python 格式化工具 Black 是否有一个选项可以撤消它在 运行 之后所做的格式更改?或者它假设我正在使用源代码管理并制作我自己的备份?这是截至 2019 年 12 月和黑色版本 19.3b0。

不,不是。它什么都不做,只是重新格式化已传递给它的文件。它只是一个性能良好的 Unix 工具,它希望您处理自己的版本控制。

--diff 选项是您可以获得的最佳选项:

--diff

Don't write the files back, just output a diff for each file on stdout.

来源:https://github.com/psf/black#command-line-options

一些文本编辑器和 IDE,例如 Pycharm 允许您简单地点击 cmd+Z(或编辑器中的任何撤消命令)以恢复到自动格式化之前的状态。此外,在自动格式化之前,您可以测试结果将使用 Black Playground

如果你不小心用黑色预提交(意思是https://pre-commit.com/)钩子格式化了很多遗留代码,而你不想这么做。

警告:在执行每条命令之前请三思,检查是否适合您的情况

  1. 将黑色预提交挂钩输出中的重新格式化文件列表复制到单独的文件中,例如命名为 filelist
  2. export SKIP=black 暂时禁用黑色预提交挂钩
  3. 您的原始(未格式化)更改已在索引中,现在用 git commit 提交它们。
  4. 现在,unset SKIP再次启用黑色预提交挂钩

现在您可以使用 filelist 自己撤消格式更改,而您的原始更改已经提交。

使用 --diff 标志,可以将输出通过管道传输到 patch,然后发送到标准输出。一行 shellscript 可以用作包装器,其中 </code> 是正在格式化的文件:</p> <p><code>black --quiet --diff "" | patch --quiet -o - ""