我们已经成功地添加并提交了一个readme.txt文件,我们来试着修改readme.txt文件,改成如下内容:
Git is a distributed version control system.
Git is free software.
现在运行git status
命令看看结果:
[root@localhost learngit]# git status
位于分支 master
尚未暂存以备提交的变更:
(使用 "git add <文件>..." 更新要提交的内容)
(使用 "git restore <文件>..." 丢弃工作区的改动)
修改: readme.txt
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
git status
命令可以让我们时刻掌握仓库当前地状态,上面地命令输出告诉我们,readme.txt
被修改了,但还没有准备提交的修改。
虽然Git告诉我们readme.txt
被修改了,但如果能看看具体修改了什么内容,自然是很好的。比如你休假两周从国外回来,第一天上班,已经记不清上次怎么修改的readme.txt
,所以,需要用git diff
这个命令看看:
[root@localhost learngit]# git diff
diff --git a/readme.txt b/readme.txt
index 46d49bf..c2a1c8a 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,2 @@
-Git is a version control system.
+Git is a distrubuted version control system.
Git is free software.
git diff
顾名思义就是查看difference,显示的格式正是Unix通用的diff格式,可以从上面的命令输出看到,我们在第一行添加了一个distributed
单词。
知道了对readme.txt
作了什么修改后,再把它提交到仓库就放心多了,提交修改和提交新文件是一样的两步,第一步是git add
:
# git add readme.txt
第二步是git commit
,在运行第二部之前,我们可以用git status
看看当前仓库的状态:
# git status
位于分支 master
要提交的变更:
(使用 "git restore --staged <文件>..." 以取消暂存)
修改: readme.txt
git status
告诉我们,将要被提交的修改包括readme.txt
,下一步,就可以放心地提交了:
# git commit -m "add distributed"
[master 2b58795] add distributed
1 file changed, 1 insertion(+), 1 deletion(-)
提交后,我们再用git status
命令看看仓库的当前状态:
# git config --global aqiang
error: 键名没有包含一个小节名称:aqiang
[root@localhost learngit]# git status
位于分支 master
无文件要提交,干净的工作区
Git告诉我们当前没有需要提交的修改,而且,工作目录是干净(working tree clean)的。
1. 版本回退
现在,你已经学会了修改文件,然后把修改提交到Git版本库,现在,在线洗一次,修改readme.txt
文件如下:
Git is a distributed version control system.
Git is free software distributed under the GPL.
然后尝试提交:
# git add readme.txt
# git commit -m "append GPL"
[master ece3383] append GPL
1 file changed, 1 insertion(+), 1 deletion(-)
像这样,你不断对文件进行修改,然后不断提交修改到版本库里,就好比玩RPG游戏时,每通过一关就会自动把游戏状态存盘,如果某一关没过去,你还可以选择读取前一关的状态。有些时候,在打Boss之前,你会手动存盘,以便万一打Boss失败了,可以从最近的地方重新开始。Git也是一样,每当你觉得文件修改到一定程度的时候,就可以“保存一个快照”,这个快照在Git中被称为commit
。一旦你把文件改乱了,或者误删了文件,还可以从最近的一个commit
恢复,然后继续工作,而不是把几个月的工作成果全部丢失。
现在,我们回顾一下readme.txt
文件一共有几个版本被提交到Git仓库里了:
版本1:wrote a readme file