gpt4 book ai didi

git - 修复 git diff-files 列出 docker 中的所有文件

转载 作者:太空狗 更新时间:2023-10-29 14:42:37 24 4
gpt4 key购买 nike

我正在尝试编写一个脚本,该脚本将使用 git 获取已更改的文件并基于该文件运行命令。我使用 docker-compose 进行开发,这是我正在处理的 repo https://github.com/my-grocery-price-book/www

当从容器内部运行 git diff-files 时,它会列出所有文件。当从容器外部运行 git diff-files 时,没有文件。

将容器内的 git 升级到最新版本的 2.16 仍然给出相同的输出。

重现步骤:

git clone https://github.com/my-grocery-price-book/www.git
docker-compose run --rm app bash
git diff-files

有人知道我需要做什么才能让 git 在 docker 中正常运行吗?

最佳答案

git diff-files使用哈希算法比较工作树和索引中的文件。工作树中的文件与本地环境中的文件具有相同的哈希值。

我的假设是,当您在 docker 容器中运行 git diff-files 时,由于 docker 卷挂载和输出,索引没有正确反射(reflect)。如果您要在 docker 容器本身中重新克隆整个存储库,则不会发生这种情况。但是,如果您在此之后立即将上下文切换回本地环境并执行 git diff-files,则行为会相反(即,当您在容器外而不是在容器内时,它会列出所有文件容器)。

由于您可能要在 docker 容器和本地环境之间切换,因此您可以执行以下操作:

git diff > /dev/null && git diff-files

使用git diff刷新索引,强制输出到/dev/null,然后git diff-files会反射(reflect)正确输出。您需要在两种环境中都这样做,尤其是从一种环境切换到另一种环境时。如果你觉得整个命令太长,你可能会发现 git aliases有帮助。

关于git - 修复 git diff-files 列出 docker 中的所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49185186/

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