八、管理Git版本库中文件的修改
首先需要理解,什么是修改?比如你新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改。其实创建一个新文件,也算一个修改。
现在我们来修改一个Git版本库中已被跟踪的文件。 如果你修改了一个名为 README.txt 的已被跟踪的文件,然后运行 git status 命令,会看到下面内容:
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: README.txt
no changes added to commit (use "git add" and/or "git commit -a")
文件 README.txt 出现在 Changes not staged for commit 这行下面,说明已跟踪文件的内容发生了变化,但还没有放到暂存区。
要暂存这次更新,需要运行 git add 命令。
$ git add README.txt
然后再看看 git status 的输出:
$ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: README.txt
Changes to be committed这行下面显示了已暂存的内容。现在README.txt文件已暂存,下次提交时就会记录到仓库。 假设此时,你又想要在 README.txt 里再加条注释。 重新编辑保存后,准备好提交。 不过且慢,再运行 git status 看看:
$ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: README.txt
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: README.txt
怎么回事? 现在README.txt文件同时出现在暂存区和非暂存区。 这怎么可能呢? 好吧,实际上 Git 只不过暂存了你运行 git add 命令时的版本。 如果你现在提交, README.txt 的版本是你最后一次运行 git add 命令时的那个版本,而不是你运行 git commit 时,在工作目录中的当前版本。 所以,运行了 git add 之后又作了修订的文件,需要重新运行 git add 把最新版本重新暂存起来:
$ git add README.txt
$ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: README.txt
此时,我们再执行git commit命令,即可将README.txt 文件的两次修改,通过一次提交记录到版本库。
$ git commit -m "修改README.txt文件"
[master 2c97086] 修改README.txt文件
1 file changed, 3 insertions(+), 1 deletion(-)