gen*_*ene 27 git file commit status
有什么方法可以获取我输入以下内容时将提交的文件列表吗?
git commit -m "my changes"
Run Code Online (Sandbox Code Playgroud)
git status列出太多了.我可以删除所有的单词,但我宁愿不.而且我不想被告知未跟踪的文件.
我试过了
git ls-files -md
Run Code Online (Sandbox Code Playgroud)
但是这并没有显示最近添加但尚未提交的文件.
我正在寻找你得到的相同输出
svn status -q
Run Code Online (Sandbox Code Playgroud)
例如$ svn status -q
一个file.py
M dir/database.py
M start.py
gen*_*ene 32
这就是我想要的.感谢notnoop领导我需要的.我想回复我的解决方案以防其他人帮助我.
git diff HEAD --name-only
Run Code Online (Sandbox Code Playgroud)
既然我打算做
git commit -s -F mesage.txt
Run Code Online (Sandbox Code Playgroud)
使用第一行中找到的文件.
我的意图是创建一个完全忽略索引的小系统,即我永远不需要做git add.(据我所知,索引在创建补丁时非常有用,这在我的工作流程中绝不是常态.)
此命令将告诉您索引/缓存/暂存区域中的哪些文件与当前HEAD(以及它们是添加,修改还是删除)不同,这些更改将在git commit
没有显式路径或-a
选项的情况下使用.它的格式与svn status
您显示的输出相似.
git diff --cached --name-status
Run Code Online (Sandbox Code Playgroud)
你可以试试:
git diff --name-status
Run Code Online (Sandbox Code Playgroud)
我得到以下内容:
$ git diff --name-status
M README.markdown
Run Code Online (Sandbox Code Playgroud)
没有未跟踪的文件.
我知道 OP 原先要求避免git status
,但我觉得留给后代(即不同意 OP 保留意见的其他人)会很好。
git status --porcelain | grep -v '^[ |??]' | sed -e 's/[A-Z] *//'
Run Code Online (Sandbox Code Playgroud)
我的理由是,它git status --porcelain
似乎就是为这种窘境而构建的......
来源:http : //git-scm.com/docs/git-status.html
编辑:sed -e 's/[A-Z] *//'
如果您希望在每个文件名前保留 git 的修改标签,您可以选择不使用。