Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git diff在config.filemode=false之后报告新/旧模式_Git_Diff - Fatal编程技术网

Git diff在config.filemode=false之后报告新/旧模式

Git diff在config.filemode=false之后报告新/旧模式,git,diff,Git,Diff,我想比较一下branch1和branch2 git diff branch1 branch2 diff——git a/User.javab/User.java 旧模式100644 新模式100755 [git config--add core.filemode false] [~/.gitconfig->filemode=false] 但仍然会出现新/旧模式。。 如何解决这个问题?就Git而言,这不是问题。您正在比较两个提交。这些承诺是存在的。这两项承诺中的任何内容都不会改变。这包括在c

我想比较一下branch1和branch2

  • git diff branch1 branch2
  • diff——git a/User.javab/User.java
  • 旧模式100644

    新模式100755

    [git config--add core.filemode false]

    [~/.gitconfig->filemode=false]

    但仍然会出现新/旧模式。。
    如何解决这个问题?

    就Git而言,这不是问题。您正在比较两个提交。这些承诺是存在的。这两项承诺中的任何内容都不会改变。这包括在commit
    a
    中,
    User.java
    具有模式
    100644
    ,在commit
    b
    中,
    User.java
    具有模式
    100755
    。这些将永远保持不变
    git diff
    将对它们进行比较,发现它们不同

    core.filemode
    配置为
    false
    就是要控制如何更新索引中的文件模式。索引和工作树都不是提交。索引(也称为暂存区)提供了一个可以构建下一次提交的位置

    您可以随时使用
    git update index--chmod
    操作任何索引文件模式。无论您使用
    -x
    +x
    将其设置为(
    100644
    100755
    ),该模式都将被永久记录-在你做出的下一个承诺中。像这样手动操作文件模式很烦人,但总是可能的

    在工作树中保存和更新文件的模式是操作系统的责任。如果操作系统正确执行此操作,则可以将
    core.filemode
    设置为
    true
    ,并使用操作系统的模式控制索引/暂存区域的模式。这通常被认为是在将来的提交中控制模式的更方便的方法。但是,如果您的操作系统出现故障,您可以将
    core.filemode
    设置为false,告诉Git忽略工作树模式,只使用存储在索引/暂存区域中的模式


    Git创建新存储库时(使用
    git init
    git clone
    ,git会探测操作系统的行为。如果工作树的文件系统行为正确,git会将
    core.filemode
    设置为
    true
    以使git的使用更加方便。如果工作树的文件系统行为不正确,git会将
    core.filemode
    设置为
    false以避免从错误的操作系统中获取不正确的设置。您可以覆盖Git的配置(使用本地配置设置-全局配置将不起作用,因为从初始创建步骤开始,存储库已经具有本地设置)如果您愿意,但这永远不会影响任何现有提交。任何现有提交的任何部分都不能更改。

    始终以货物崇拜的方式使用该功能。非常感谢根本原因。现在更清楚了。