Git状态有点令人困惑

时间:2009-12-04 00:49:41

标签: git

Git在我的一个分支机构上报告以下状态:

# On branch awesome
# Changes to be committed:
#   (use "git reset HEAD ..." to unstage)
#
#       new file:   NEW.txt
#
# Changed but not updated:
#   (use "git add ..." to update what will be committed)
#
#       modified:   NEW.txt
#

这是因为我创建了NEW.txt然后命令:

git add NEW.txt

后来编辑了该文件。这是否意味着做git commit会提交我对文件所做的最新更改,还是应该格外小心?

3 个答案:

答案 0 :(得分:9)

Git具有工作目录暂存区域(索引)的概念。如果添加新文件,则会将其添加到索引中。如果您以后编辑该文件,则只会在您的工作副本中进行更改。您需要以与已存在的文件相同的方式将其添加到索引中。

因此,简而言之,只有索引中的内容才会被提交。 commit -a可以在这里使用,或者只是像往常一样编辑它时再次添加文件。

答案 1 :(得分:5)

Git版本内容而不是文件。因此,您git add时的内容将在下次提交时提交。

答案 2 :(得分:4)

在您描述的情况下,如果您执行git commit,您将提交在执行git add之前所做的更改(可能只创建了一个空文件),并且不是那些之后。您可以使用git diff查看差异:

git diff

显示工作副本索引之间的差异,而

git diff --cached

显示索引和HEAD之间的差异。 git diff --cached显示的差异将在git commit上提交。