代码之家  ›  专栏  ›  技术社区  ›  Nikolai

文件的Git文件状态

git
  •  0
  • Nikolai  · 技术社区  · 6 年前

    File states

    git有4种文件状态。 所以问题是:删除和移动/重命名文件的状态是什么? 当然,如果文件被留在文件系统中,那么在提交之后它将被取消跟踪,但是在提交之前它已经处于删除状态(用于删除)。我认为删除不是真正的文件修改,而是一个事件。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Edward Thomson    6 年前

    可以考虑删除或重命名,就像这个图表中的编辑一样。不管您是在进行内容更改(编辑文件)、元数据更改(例如设置文件的可执行文件)还是删除它,它都会经历相同的工作流。

    如果您将一个文件提交给git(在您的关系图中处于teal“未修改”状态)并将其删除,那么您现在处于“已修改”状态。git检测到此更改:

    On branch master
    Changes not staged for commit:
      (use "git add/rm <file>..." to update what will be committed)
      (use "git checkout -- <file>..." to discard changes in working directory)
    
        deleted:    foo.txt
    
    no changes added to commit (use "git add" and/or "git commit -a")
    

    此时,该文件将在磁盘上删除,但不会暂存删除。它处于黄色的“修改”状态。要准备它,你可以通过运行 git add foo.txt .

    回想起来,尽管有名字, git add 一个文件,它 将更改暂存到文件 git添加 将进行删除。

    (我提到这一点只是为了证明一点,其实跑起来自然多了 git rm

    On branch master
    Changes to be committed:
      (use "git reset HEAD <file>..." to unstage)
    
        deleted:    foo.txt
    

    [master 3b58d71] deleted
     1 file changed, 7 deletions(-)
     delete mode 100644 foo.txt
    

    On branch master
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
    
        foo.txt
    
    nothing added to commit but untracked files present (use "git add" to track)