git status --porcelain 返回相同的文件差异

问题描述 投票:0回答:1

我想创建一个工作流程,确保 PR 所有者在提交该 PR 之前执行

npm install && gulp compile-assets
。所以我添加了一个运行并执行以下步骤的 Github 工作流程

  1. 查看分行
  2. 奔跑
    npm install && gulp compile-assets
  3. 然后运行
    git status --porcelain
    看看是否有任何差异。这里的期望是没有任何更改,因为
    npm install && gulp compile-assets
    在本地所做的所有更改都应该已提交。

但是,

git status --porcelain
似乎总是返回差异。当我应用 `git diff commited-file generated-file

我发现根本没有任何变化。差异显示

@@ -1,21 +1,21 @@
并且没有任何改变。但差异显示所有行都被删除并添加“但结果是相同的”

我尝试在

git config core.autocrlf false && git config core.filemode true
之前添加
git status --porcelain
但没有改变结果。

什么可能导致

git status --porcelain
显示文件差异而没有任何真正的更改?

这是一个屏幕截图,显示了显示差异的部分文件,但没有进行任何更改。

该项目有一个 .gitattribute 文件,其中包含以下内容

* text=auto

**/package.json text eol=lf
**/package-lock.json text eol=lf

enter image description here

git github github-actions
1个回答
0
投票

输出肯定有变化。左边,第 14 行包含

"devDependencies": {
,右边是第 15 行。

很可能有人正在使用整洁的工具以某种方式格式化这些文件。如果这是您配置的工具,那就太好了,然后确保该工具具有适当的配置文件,以便用户可以从编辑器或命令行调用它。如果是另一个工具进行了不需要的更改,那么找出如何禁用该功能。

差异也可能主要在于空白的数量或类型;例如,使用制表符而不是空格,或不同数量的缩进,或不同的行结尾。其中任何一个都可能导致每条线的输出存在差异。在文件之前和之后运行

cat -v
或使用
od -tx1
xxd -g1
等工具可以帮助您找出文件中的实际字节以及相关差异是什么。

© www.soinside.com 2019 - 2024. All rights reserved.