python - 有没有办法让 git commit --verbose 在使用预提交 Hook 时显示更新的差异?

标签 python git commit verbose python-black

所以我目前正在设置一个 git pre-commit 钩子(Hook)来使用 iSort 和 python Black 整理我的 python 文件,我遇到的问题是当我使用 git commit --verbose 提交编辑器中显示的差异实际上并未考虑对暂存文件的修改。

例如,假设我有一个如下所示的 python 文件:

import re

from os import path

def x():
    v = re.compile(r"1")
    print(3, v)

def y(v=3):
    z = path.join("a", "b")
    thing = "a string"
    print(thing, z)

基于我配置的 iSort 和黑色设置,我的预提交脚本会将文件更改为如下所示:

import re
from os import path


def x():
    v = re.compile(r"1")
    print(3, v)


def y(v=3):
    z = path.join("a", "b")
    thing = "a string"
    print(thing, z)

不幸的是,在 git 提交编辑器中它仍然显示未修改的差异。有什么方法可以让编辑器获得正确的输出吗?

理论上我想这无关紧要,但很高兴看到实际差异是什么。

最佳答案

代替预提交 Hook ,尝试使用内容过滤器驱动程序,使用污迹/清理脚本,它可以:

  • 在 checkout 时以一种方式制作脚本
  • 在提交时(或在 git diff 上)以另一种方式制作你的脚本

查看 example here(for clean) here

/image/tumAc.png
(图片来自 "Customizing Git - Git Attributes" 来自“Pro Git book ”))

关于python - 有没有办法让 git commit --verbose 在使用预提交 Hook 时显示更新的差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54583516/

相关文章:

python - 将命名元组转换为字典

git - 如果标记为 "Skip default checkout",则 Jenkins 获取变量 GIT_URL 不可用

authentication - 将远程提交推送到 github 并启用两因素身份验证

github - 如何在 GitHub 上的问题评论中引用提交?

java - SQLite 事务未提交

python - 在 pandas DataFrame 中设置新列以避免 SettingWithCopyWarning 的正确方法

python - 将表单数据从 React 句柄提交函数发送到 python API?

git - 使用 JGit 中止 merge

python - 使用 Python 从列表和字典构建数组

升级到 2002.3 后,Git 分支未显示在 IntelliJ 的状态栏中