git - git ls-files --modified 也列出已删除的文件
问题描述
git ls-files --modified
应该只列出修改过的文件。但是,它也包括已删除的文件。
另一方面,
git ls-files --deleted
仅列出已删除的文件,这是预期的。
当有一个单独的命令仅列出已删除的文件时,为什么 git 将已删除的文件视为已修改?
系统信息:
> git --version
git version 1.7.1
> lsb_release -a
LSB Version: :base-4.0-amd64:base-4.0-ia32:base-4.0-noarch:core-4.0-amd64:core-4.0-ia32:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-ia32:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-ia32:printing-4.0-noarch
Distributor ID: CentOS
Description: CentOS release 6.8 (Final)
Release: 6.8
Codename: Final
> uname -m
x86_64
> echo $0
/bin/tcsh
解决方案
git ls-files --modified
认为已删除的文件已修改,因为它实际上已被修改(以至于完全丢失)。
如果您需要从--modified
or-m
输出中减去已删除的文件,您有多种选择:
- 使用
git status --porcelain
(不确定这是否存在于您在此处与 CentOS 一起使用的真正古老的 Git 中),并解释其输出; - 使用
git ls-files
两次,一次得到修改后的包含删除的列表,再次得到删除的列表,减去已删除的文件;或者 - 使用
git ls-files -m -d -t
(可以压缩为git ls-files -mdt
)并解释其输出。
对于最后一个测试用例,我为 Git 克隆了 Git 存储库,在工作树中稍微修改了 Makefile,然后zlib.c
从工作树中删除:
$ git ls-files -mdt
C Makefile
R zlib.c
C zlib.c
请注意如何zlib.c
出现两次,一次被R
移除,一次被C
挂起(修改)。当您阅读结果时,让R
状态覆盖状态只是编程的小问题。C
推荐阅读
- c++ - 整数到 std::string 的十六进制表示
- r - 具有三维边缘列表的网络?
- php - 如何在 MySQL 中使用连接语句数据库在 2 个表上插入数据
- c# - FlashMessage 未从浏览器中删除
- c# - 使用英特尔实感摄像头的 Opencvsharp 窗口中没有显示图像
- python - 如何获取用户输入以在 openpyxl 中显示单元格数据?
- angular - Firestore 读取数据计数与文档查询计数不匹配
- javascript - 如何在反应中更改 .gltf 缓冲区 uri?
- json - JWT 的用户登录错误(邮递员 POST 令牌)
- node.js - 在 Express.js 中使用 Firebase 作为身份验证中间件