gpt4 book ai didi

git - 为什么 `git ls-files --modified` 在 merge 冲突中多次显示文件?

转载 作者:行者123 更新时间:2023-12-01 22:07:39 26 4
gpt4 key购买 nike

当我遇到 merge 冲突并键入 git ls-files --modified 时,我希望它会显示在当前 merge 冲突中修改的文件列表,并且只显示一个文件一次.但有时它会多次显示同一个文件。例如,当我执行以下操作时:

git init
git commit --allow-empty -m 'init'
echo hello world > file
git add -A
git commit -m "hello world"
git checkout HEAD^
git checkout -b other
echo hello other > file
git add -A
git commit -m "hello other"
git merge master
# Generates conflict
git ls-files --modified

显示

file
file

当 git status 只显示一次 file 时。

在本例中,它列出了同一个文件两次,但我曾遇到过它列出同一个文件 3 次的情况。

这是预期的行为吗?

最佳答案

git ls-files 是一个低级命令(在 Git 世界中,这称为“管道命令”),它显示 Git 存储库的内部状态。更准确地说,它列出了索引中的条目。

当 merge 以冲突结束时,每个冲突文件在索引中有 3 个条目:一个用于共同祖先,一个用于您的版本,一个用于被 merge 的版本。当您有 Unresolved 冲突时,这就是允许 git diff 向您显示组合差异的原因。

作为上述两个陈述的结果,git ls-files 为同一文件显示多个条目以防发生冲突是合乎逻辑的。

关于git - 为什么 `git ls-files --modified` 在 merge 冲突中多次显示文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50568422/

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