git 暂存已修改文件

现在我们修改下之前已跟踪过的文件 benchmarks.rb,然后再次运行 status命令,会看到这样的状态报告:

$ git status 
# On branch master 
# Changes to be committed:
# (use "git reset HEAD ..." to unstage) 
# 
# new file: README 
#
# Changes not staged for commit: 
# (use "git add ..." to update what will be committed) 
# 
# modified: benchmarks.rb 
#

文件 benchmarks.rb出现在 “Changes not staged for commit” 这行下面,说明已跟踪文件的内容发生了变化,但还没有放到暂存区

要暂存这次更新,需要运行 git add命令

现在让我们运行 git add将 benchmarks.rb 放到暂存区,然后再看看git status的输出:

$ git add benchmarks.rb 
$ git status 
# On branch master 
# Changes to be committed: 
# (use "git reset HEAD ..." to unstage) 
# 
# new file: README 
# modified: benchmarks.rb 
#

重要的事情说三遍:

当原来的文件的状态是:已暂存,然后修改该文件,该文件的状态此时为modified的。之前说过被纳入版本控制管理的文件,有三种状态:未更新,已修改或者已放入暂存区。所以要暂存这次更新,需要将文件的状态更改为已暂存,运行git add 命令。

现在两个文件都已暂存,下次提交时就会一并记录到仓库。假设此时,你想要在 benchmarks.rb里再加条注释,重新编辑存盘后,准备好提交。不过且慢,再运行 git status看看:

$ vim benchmarks.rb 
$ git status 
# On branch master 
# Changes to be committed: 
# (use "git reset HEAD ..." to unstage) 
# 
# new file: README 
# modified: benchmarks.rb 
# 
# Changes not staged for commit: 
# (use "git add ..." to update what will be committed) 
# 
# modified: benchmarks.rb 
#

怎么回事? benchmarks.rb文件出现了两次!一次算未暂存,一次算已暂存,这怎么可能呢?好吧,实际上 Git 只不过暂存了你运行 git add命令时的版本,如果现在提交,那么提交的是添加注释前的版本,而非当前工作目录中的版本。

所以,运行了 git add之后又作了修订的文件,需要重新运行 git add把最新版本重新暂存起来:
$ git add benchmarks.rb 
$ git status 
# On branch master 
# Changes to be committed: 
# (use "git reset HEAD ..." to unstage) 
# 
# new file: README 
# modified: benchmarks.rb 
#

你可能感兴趣的:(git 暂存已修改文件)