【问题标题】:Understanding and solving git Conflict "File mode changed"理解和解决 git Conflict \"File mode changed\"
【发布时间】:2023-01-25 22:36:08
【问题描述】:

我在 git 上正常工作...我创建我的分支,在它上面工作...合并到开发...解决冲突...创建 PR 但是当我进入 bit-bucket 时,我发现它显示了很多冲突,原因是:

“冲突:文件模式在源和目标中都发生了变化”

这两个文件显然是相同的,除了内容:

-rw-rw-r-- 1 me me 98085 sep 28 13:16 path/to/file.py in develop
-rw-rw-r-- 1 me me 99893 sep 28 13:16 path/to/file.py in my branch

我不明白这个冲突或如何解决它,我的意思是解决,而不是忽略 git config core.fileMode false。

【问题讨论】:

  • Rebase 而不是合并可以解决这个问题。否则它可以像其他合并冲突一样处理......
  • 我无法正常解决它,因为在我的终端中看不到冲突,而且我不知道该怎么做...更改权限?行尾?
  • 那么你的git status 是什么?
  • 正常的'你的分支是最新的','没有什么可提交''工作树干净'
  • 这个错误对我来说意义不大,因为 Git 每个文件只存储一位“模式”。合并将具有三个输入:merge base、tip1、tip2。如果模式从 base 变为 tip1,则它从 -x 变为 +x 或从 +x 变为 -x。如果模式从 base 变为 tip2,它必然具有同样的变化.这两个变化不能冲突。也许 bitbucket 指的是文件模式(指向普通文件的符号链接)而不是“文件模式”(-x vs +x)?

标签: git bitbucket git-merge-conflict


【解决方案1】:

(注意:不是答案,更多的是格式化评论)

git 存储本身也有一个“文件模式”的概念。

你能比较一下吗:

git ls-tree <commit>:path/to/

当用develop、branch和&lt;base commit id&gt;替换&lt;commit&gt;时,看看file.py出现了什么“文件模式”?


输出应该是这样的:

# taken from github.com/git/git :
$ git ls-tree HEAD:xdiff/
100644 blob bb56b23f34c96ceec169d39b829e89cd512d7e39    xdiff.h
100644 blob 32652ded2d7c5cad87f120a13c3c6c84d6def61f    xdiffi.c
100644 blob 126c9d8ff4e4147e0f4e96ddb9debfde17d9b637    xdiffi.h
            # etc ...
#  ^
# that filemode

【讨论】:

  • 一切看起来都正确,但我将使用该命令进行调查,谢谢
【解决方案2】:

我刚刚遇到了类似的问题,Bitbucket 对一个文件说“冲突:文件模式在源和目标中都发生了变化”。这条消息被证明是误导性的。 git ls-tree 显示了两个分支和合并库中相关文件的相同文件模式。

最后我按照Resolve merge conflicts的流程,显示冲突在内容的文件。我修好了这些,冲突就解决了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2023-02-24
    • 1970-01-01
    • 2021-07-22
    • 2020-09-08
    • 1970-01-01
    • 2011-07-16
    相关资源
    最近更新 更多