【问题标题】:When one adds an untracked file, does it not go to staged immediately?当一个人添加一个未跟踪的文件时,它不会立即上演吗?
【发布时间】:2013-03-05 16:30:25
【问题描述】:

在git-scm页面Recording Changes to a Repository显示的图表中,它显示当添加untracked文件时,它会移动到unmodified状态。

这是正确的吗?如果我运行$ git add myFile 然后运行$ git status,它表明myFile 已准备好提交,这(从我初学者的角度来看)在查看该页面上的图表时看起来不直观。

图表不正确、不完整,还是我对图表的理解不正确?如果是后者,请有人解释一下是什么意思。

【问题讨论】:

    标签: git git-add


    【解决方案1】:

    当您git add 一个新的以前未跟踪的文件时,它会立即暂存(图像中的蓝色阶段)。该图在这方面具有误导性,但该页面上的文字在Tracking New Files 段下说明了很多。

    【讨论】:

    • 该图可能具有误导性; “添加文件”箭头应从“未跟踪”变为“暂存”。 AFAIK,如果您使用“git rm file”,则文件将从目录中删除,并在暂存区标记为已删除;它不会简单地变得无法追踪。
    • 我认为箭头“添加文件”并不直接表示git add。我认为它只是试图展示文件如何从一种状态移动到另一种状态......无论如何还不够清楚
    • 谢谢大家,我正在向我的实验室的其他部分教授 git 的介绍,但作为初学者,我尽量不要教任何我不确定的东西。跨度>
    • 鉴于“添加文件”以“未跟踪”开头,我假设该文件已经存在并且只能将“添加文件”解释为“使用git add 添加”。
    【解决方案2】:

    该图具有误导性,因为它没有明确指出文件版本之间的区别同一个文件。

    当您git add 一个文件时,您正在将工作目录中的当前版本添加到暂存区。当前版本现在被视为暂存并准备好提交。由于您的工作目录文件内容与暂存版本的相同,因此该文件被视为未修改。如果您此时要提交,则签入到 repo 的版本是 Staged 版本,它也恰好与您工作目录中文件的外观相匹配。

    但是,假设您不是在添加文件后立即提交,而是对工作目录中的文件进行更多更改。现在,您实际上有两个版本的文件:早期的分阶段版本,以及现在的修改 工作目录中的版本。如果您要在这个时刻提交,则会签入较早的 Staged 版本,这与您的工作目录中的不同。

    【讨论】:

      【解决方案3】:

      你的问题的答案是肯定的。当您暂存未跟踪的文件时,它会变成暂存的,而不是未修改的。

      对我来说,这个图表最困难的问题是它没有任何意义 将文件分类为:

      • 未跟踪
      • 未修改
      • 修改
      • 上演

      在我看来,正确的类别是:

      • 未跟踪
      • 未修改
      • 未分级
      • 上演

      重要的形容词用粉红色标记。灰色的是多余的。 您不必说:“文件已被跟踪、修改和暂存”。说“文件已暂存”就足够了,因为每个暂存文件都会被修改和跟踪。

      一旦意识到这一点,就很容易理解,未跟踪的文件只能转移到暂存状态。这是由以下人员完成的:

      git add [filename]
      

      没有用于转换的命令:

      • 未跟踪的文件 => 未修改的文件
      • 未跟踪的文件 => 未暂存的文件

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-30
        • 1970-01-01
        • 2021-11-04
        • 2011-07-11
        • 2016-12-19
        • 1970-01-01
        相关资源
        最近更新 更多