gpt4 book ai didi

git - 预提交 Hook 更改了要添加到提交的文件

转载 作者:行者123 更新时间:2023-12-04 13:02:52 30 4
gpt4 key购买 nike

我正在为我的存储库编写一个预提交钩子(Hook),以根据编码标准格式化代码。

npm install
./node_modules/.bin/eslint --fix ./index.js

上面这行是我的钩子(Hook)的一部分。它按我的需要工作,并使用干净的代码将 index.js 文件更改为标准格式。成功提交后,当我做 git 状态 我看到一个未暂存的更改,这是在最近的提交中由 pre-commit hook 所做的更改。

我正在寻找一种方法,将预提交 Hook 所做的所有更改都包含在当前提交中,而无需再次提交。所以,流量应该是
  • git commit
  • 预提交 Hook 运行,必要时更改文件,将更改添加到当前提交
  • 现在,我可以推
  • 最佳答案

    所以钩子(Hook)需要暂存更改,就像你在提交中暂存任何你想要的更改 - 使用 git add .

    如果您在开始此过程时知道您的工作树与索引同步,那么就很简单

    git add .

    这通常不是一个好的假设。您可以修改您的脚本以确保工作树是干净的(尽管如果您希望能够在之后恢复工作树,则需要跳过一些箍)或如果不是则中止(尽管如果完成可能会受到限制)在预提交钩子(Hook)中)。

    更好的是只添加修改后的文件(尽管这意味着您必须能够告诉脚本实际修改了哪些文件)。

    这仍然假设(与脚本的一般性质一样)如果您修改了文件,则您的意图是暂存对该文件的所有修改。这可能对您的工作流程有效,如果是这样,则上述内容就足够了。

    当然,也许您的工作流程不允许这样的假设,在这种情况下,您需要从根本上重新审视脚本的工作方式。在这种情况下有几个选择:

    1) 您可以在脚本开始时 stash 未暂存的更改。
    git stash --keep-index --include-untracked

    然后运行您的清理并执行 git add . (知道工作树中的所有更改都是运行脚本的结果),然后
    git stash pop

    2)您可以完全绕过工作树,对索引中存在的文件进行操作。 (因为索引不是您的工具可以直接处理它的形式,所以您基本上必须将每个索引条目提取到要清理的文件中,然后更新回索引。)

    关于git - 预提交 Hook 更改了要添加到提交的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51503312/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com