git 获取修改文件和新增文件列表(不包过删除文件)
git ls-files
命令
git ls-files --others --exclude-standard // 获取新增文件列表git ls-files --modified --exclude-standard // 获取修改文件列表git ls-files --deleted --exclude-standard // 获取删除文件列表
没有添加到暂存区上面的命令是正常的,添加到暂存区获取不到对应的文件。
需要实现一下功能:
1.获取修改文件列表(不包括删除文件);
2.获取新增文件列表;
3.文件是否在暂存空间,都能获取到文件列表(暂存空间文件和未暂存空间文件重复去重);
已暂存
git diff --name-only --cached // 获取暂存区所有文件git diff --name-only --cached --diff-filter=A // 获取新增文件git diff --name-only --cached --diff-filter=D // 获取删除文件git diff --name-only --cached --diff-filter=M // 获取修改文件git diff --name-only --cached --diff-filter=d // 排除删除文件
--diff-filter
参数:
A:新增文件
D:已删除文件
M:修改过文件
小写字母取反;
未暂存
git ls-files --exclude-standard --others // 新增git ls-files --exclude-standard --modified // 修改git ls-files --exclude-standard --deleted // 删除
git ls-files --exclude-standard --others --modified
获取未暂存区新增修改文件,但是包括了删除的文件。
取差集命令 comm
comm [-123][--help][--version][第1个文件][第2个文件]
参数:
-1 不显示只在第1个文件里出现过的列
-2 不显示只在第2个文件里出现过的列
-3 不显示只在第1和第2个文件里出现过的列
comm -3 <(git ls-files --exclude-standard --deleted | sort) <(git ls-files --exclude-standard --others --modified | sort)comm -3 <(git ls-files --exclude-standard --deleted | sort) <(git ls-files --exclude-standard --others --modified | sort) | sed -e 's/^[[:space:]]*//'
sed -e 's/^[[:space:]]*//'
清除输出的文件前面的空格
感谢大家的回答,问题解决。
列出所有已添加到暂存区且内容发生变动的文件git diff --cached --name-only
列出所有已添加到暂存区的新文件git diff --cached --diff-filter=A --name-only
列出所有未添加到暂存区且内容发生变动的文件git diff --name-only
列出所有新添加到工作目录但尚未添加到暂存区的文件git diff --diff-filter=A --name-only
去除重复项,上述命令的结果合并,用shell命令sort和uniq
获取Git中所有改动和新增文件列表(含暂存和未暂存),逐个运行对应命令后合并去重,但无法直接识别文件暂存状态。要排除删除文件,不使用--diff-filter=D。若需按暂存状态分类展示,分别执行命令查看。
功能说明:
1.获取修改文件列表(不包括删除文件);
2.获取新增文件列表;
3.文件是否在暂存空间,都能获取到文件列表(暂存空间文件和未暂存空间文件重复去重)。
1.获取未暂存文件列表(不包括删除文件):
comm -3 <(git ls-files --exclude-standard --deleted | sort) <(git ls-files --exclude-standard --others --modified | sort) | sed -e 's/^[[:space:]]*//'
2.获取暂存文件列表:
git diff --name-only --cached --diff-filter=d
3.获取暂存空间和未暂存空间文件列表并过滤重复项:
comm -3 <(git diff --name-only --cached --diff-filter=d | sort) <(comm -3 <(git ls-files --exclude-standard --deleted | sort) <(git ls-files --exclude-standard --others --modified | sort) | sed -e 's/^[[:space:]]*//') | sed -e 's/^[[:space:]]*//'
相关资料说明:git ls-files
命令(获取未暂存文件列表):
git ls-files --exclude-standard --others // 获取新增文件列表git ls-files --exclude-standard --modified // 获取修改文件列表git ls-files --exclude-standard --deleted // 获取删除文件列表
git diff
命令(获取暂存文件列表):
git diff --name-only --cached // 获取暂存区所有文件git diff --name-only --cached --diff-filter=A // 获取新增文件git diff --name-only --cached --diff-filter=D // 获取删除文件git diff --name-only --cached --diff-filter=M // 获取修改文件git diff --name-only --cached --diff-filter=d // 排除删除文件
--diff-filter
参数:
A:新增文件
D:已删除文件
M:修改过文件
小写字母取反;
comm
命令(取列表差集):
comm [-123][--help][--version][第1个文件][第2个文件]
参数:
-1 不显示只在第1个文件里出现过的列
-2 不显示只在第2个文件里出现过的列
-3 不显示只在第1和第2个文件里出现过的列
sed -e 's/^[[:space:]]*//'
清除输出的文件前面的空格
感谢大家的帮助。
Staging Area,暂存区 / 中间区。把对项目做的修改,先放到暂存区,然后再做提交。 用法 把对某个文件的所有修改添加到暂存区: git add <文件> 把在某个目录下做的所有修改添加到暂存区: git add <目录> 把做的所有修改还有新的文件添加到暂存区(不包含删除文件): git add . 把所有东西放到暂存区(修改,新文件,删除文件): git add -A 把做的所
配置完上述代码后,我依次执行git add .,git commit -m "test",然后eslint检测到有未使用的变量,中止commit,但是我操作过的文件处于暂存目录,需要手动执行git restore --staged .,有没有办法在eslint发生错误时,让文件主动处于工作区
请求header GET /v1/videos/temp Authorization:Bearer {ACCESS TOKEN} Content-Type:application/json 注: 请将上方的{ACCESS TOKEN}替换为您的ACCESS TOKEN 可选参数 title=视频名称&act_id=暂存视频所属频道id&manager=频道管理员ID&perPage=每页显示条数
上一章主要学习了三个命令:git init、git add和git commit,这三条命令可以说是版本库创建的三部曲。同时还通过对几个问题的思考,使读者能够了解Git版本库在工作区中的布局,Git三个等级的配置文件以及Git的别名命令等内容。 在上一章的实践中,DEMO版本库经历了两次提交,可以用git log查看提交日志(附加的--stat参数看到每次提交的文件变更统计)。 $ cd /pat
问题内容: 我尝试了很多方法来使用jGit克隆存储库(它可以工作)。然后,我写的一些库存档,并尝试添加所有(一个,或者类似的东西)..但它不工作。简单文件不会添加到暂存区域。 我的代码是这样的: 我究竟做错了什么?谢谢。 尝试使用addFilePattern(“。”)时发生异常: 问题答案: 一个简单的方法来调试这是看的测试AddCommand在JGit回购: 您将看到,为了添加所有文件,从不使用
基本概念 我们先来理解下Git 工作区、暂存区和版本库概念 工作区:就是你在电脑里能看到的目录。 暂存区:英文叫stage, 或index。一般存放在 ".git目录下" 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。 下面这个图展示了工作区、版本库中的暂存区和版本库之间的关系