我想获取新的和修改过的文件,然后执行compress
之类的操作。出于对efficacy
的考虑,我不能每次都搜索所有文件。因此git
出现在我的脑海中。
我知道git status
可以帮助我获取所有已更改的文件,然后我可以自己过滤它们。但是有一个问题。让我举个例子。
我有一个名为text.txt
的文件,其内容为Hello
。然后我将其内容修改为Hello World
。现在我执行git add test.txt
。最后,我将其内容恢复到Hello
。
git add test.txt
,那么git status
就什么都没给我了。这是对的,因为事实上文件没有被修改。git status
显示要提交的更改: 修改:test.txt
未提交提交的更改: 修改:test.txt
有没有办法通过git
来做这件事?
也许git
在这种情况下无效。那还有其他方法吗?
答案 0 :(得分:0)
使用git diff
来显示提交,工作文件夹等之间的差异
供参考:
Excellent answer to related question here on SO that goes into more detail
答案 1 :(得分:0)
我不完全确定您的需求,但如果您只想要修改文件的紧凑列表,可以尝试:
git status -s
将返回:
MM text.txt
第一个" M"代表"要做出的改变",秒" M"代表"未提交的变更#34;。
答案 2 :(得分:0)
直接答案是否定的。
git跟踪未提交更改的机制如下:
Git有三个主要状态,您的文件可以驻留在:committed, 修改,上演。已提交意味着数据已安全存储 在您的本地数据库中。修改意味着您已更改文件 但尚未将其提交到您的数据库。分阶段意味着你 已在当前版本中标记了已修改的文件以进入您的 下一次提交快照。
更多详细信息,您可以参考Git Basics。
未提交的提交更改:列出已修改状态的文件。
要提交的更改:列出已暂存并等待将暂存文件记录到下一次提交的文件。
对于您尝试的第二个操作(直接使用git status
),这是由于您将test.txt
的连接更改为Hello World
并首次暂存此文件而导致的。因此状态为Changes to be committed: modified: test.txt
。当您更改内容test.txt
(Hello
)时,test.txt
Changes not staged for commit: modified: test.txt
还有一个已修改状态(与工作目录比较分阶段版本)。
对于您尝试的第一个操作(第二次使用git add test.txt
),当您第二次暂存更改的内容Hello
时,git可以检测到之间没有更改阶段版本和当前提交的版本(在.git
文件夹中比较分阶段版本和当前版本)。所以git会显示nothing to commit, working tree clea
n。
单词,如果您在此期间未提交的情况下多次更改文件,git将不会跟踪未提交的更改。