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
会提交我对文件所做的最新更改,还是应该格外小心?
答案 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
上提交。