【问题标题】:Get new and modified (real status) file by git通过 git 获取新的和修改的(真实状态)文件
【发布时间】:2017-09-14 18:36:22
【问题描述】:

我的情况

我想获取新的和修改过的文件,然后执行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在这种情况下不起作用。那么还有其他方法吗?

【问题讨论】:

    标签: linux git file version-control


    【解决方案1】:

    直接的答案是否定的。

    git 跟踪未提交更改的机制如下:

    Git 具有三个主要状态,您的文件可以驻留在其中:已提交、 修改,并上演。已提交意味着数据已安全存储 在您的本地数据库中。已修改表示您已更改文件 但尚未将其提交到您的数据库。分阶段意味着你 已将当前版本中的修改文件标记为进入您的 下一个提交快照。

    更多详情,可以参考Git Basics

    Changes not staged for commit:列出具有修改状态的文件。

    要提交的更改:列出已暂存并等待记录暂存文件以进行下一次提交的文件。

    • 你尝试的第二个操作(直接使用git status),是因为你将test.txt的connect改为Hello World,第一次stage这个文件。所以有状态Changes to be committed: modified: test.txt。当您将内容 test.txt 更改回 (Hello) 时,test.txt Changes not staged for commit: modified: test.txt 也有一个修改状态(将工作目录与暂存版本进行比较)。

    • 你第一次尝试的操作(第二次使用git add test.txt),当你第二次staging改变的内容Hello时,git可以检测到stage版本和之前的版本没有变化当前提交的版本(比较暂存版本和.git 文件夹中的当前版本)。所以git会显示nothing to commit, working tree clean。

    一句话,如果你多次更改一个文件而在此期间未提交,git不会跟踪未提交的更改。

    【讨论】:

    • 感谢您的出色回答。所以git 在这种情况下对我不起作用。你知道其他方法吗?
    • 抱歉耽搁了。 Git确实不符合您的情况。据我所知,所有的 VCS(版本控制系统)都是将最后一个未提交的版本与当前版本进行比较。如果您想跟踪文件的所有更改版本,解决方法是在每次更改时提交。
    【解决方案2】:

    使用git diff 显示提交、您的工作文件夹等之间的差异。

    供参考:

    git diff documentation

    Excellent answer to related question here on SO that goes into more detail

    【讨论】:

    • 我只想知道文件名而不是区别。
    【解决方案3】:

    我不完全确定您的需求,但如果您只是想要一份修改后文件的简洁列表,您可以尝试:

    git 状态 -s

    这将返回:

    MM 文本.txt

    第一个“M”代表“要提交的更改”,第二个“M”代表“未准备提交的更改”。

    【讨论】:

    • 我能得到文件的真实状态吗?
    • 不,不简单。一种方法可能是仅在“要提交的更改”区域检查文件,但要获得一致的结果,需要您每次执行git add filename 以检查文件状态git status
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    相关资源
    最近更新 更多