13

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

4

4 回答 4

9

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

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

--diff

不要写回文件,只需在标准输出上为每个文件输出一个差异。

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

于 2019-12-10T01:06:45.377 回答
2

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

于 2020-02-21T01:54:09.593 回答
1

使用该--diff标志,可以通过管道将输出发送patch到标准输出。单行 shellscript 可以用作包装器,$1正在格式化的文件在哪里:

black --quiet --diff "$1" | patch --quiet -o - "$1"

于 2021-06-24T19:44:16.267 回答
0

如果您不希望使用黑色预提交(意思是https://pre-commit.com/)挂钩格式化大量遗留代码,而您不想这样做。

警告:在执行这些命令之前请先考虑一下,以检查您的情况是否正确

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

现在,您可以filelist在原始更改已提交时自行撤消格式更改。

于 2020-05-21T09:31:23.957 回答