上述我们已经成功的提交了文件,接下来开始进行文件的修改,例如我们把文件修改成这样:
Hello my world!
We are family!
修改完成之后我们输入命令git status:
运行之后,结果为:
git status:此命令可以让我们时刻掌握着仓库当前的状态,如上命令已经告诉我们文件已经修改,但未提交
虽然readme.txt已经被修改,但是想要看看修改了什么内容怎么办呢?这时需要输入git diff命令:
之后运行结果如下:
git diff:此命令实际上就是用于查看你修改的内容(difference),可以看到我们在上面添加了一个my
修改完之后我们就可以用git add 命令提交到仓库(提交修改和提交新文件一样):
输入完命令运行之后同样没有任何输出,接着我们输入命令git commit(提交)
运行该命令之后显示为:
最后我们再用git status命令看一下仓库当前的状态,显示没有文件要提交:
-------------------------------------------------------------------------------------------------------------------------
现在我们学会了git修改,我们试着再一次对文件进行修改:
Hello my world!
We are family and we are happy!
然后尝试进行提交:
类似上述可以进行不断的修改,之后进行提交(当文件修改到一定程度的时候,可以“保存一个快照”,称为commit,一旦文件混乱或者误删,可以从最近的一个commit找回)
经过上述,我们可以知道共有三个版本的文件被提交到仓库里面:
版本1:wrote a readme file
版本2:add my
版本3:add warm
所以我们要怎么样才能查看我们的修改记录呢,在Git中,用git log命令查看:
运行该命令如下:
上面我们可以看到一些比较杂乱的信息,为了避免我们也可以在git log后面加上--pretty=onlion参数:
我们可以看到上面的一大串数字字符,这个是commit id
接下来我们如何把readme.txt退回到上一个版本呢?也就是add my版本
(对此表明,当前版本用HEAD表示,则上一个版本用HEAD^表示,同理上上一个版本用HEAD^^表示)
我们吧add warm版本退回到add my版本,可以使用git reset命令:
运行该命令之后显示为:
接下来我们看看之前的内容是否对呢?我们输入cat readme.txt命令以及显示结果为:
之后奇怪的事情发生了,当你用git log命令看一下仓库当前状态时,我们发现最新版本add warm不见了.....
(这就相当于时光穿梭啦,想回到古代,利用古代的技术你还想回来啊,做梦吧)
但其实办法还是有的,O(∩_∩)O,只要你上面的命令框还没有关掉,你还可以顺着往上找,找到add warm的commit id,就可以找回来了
然后再用命令cat readme.txt看一下readme.txt的内容:
困了,睡会觉吧,卡,电脑关上了,第二天又想找到新版本咋办?
那还不简单吗,输入git reflog(此命令用来记录你的每一次命令)命令,之后找到add warm的commit id就可以了
-------------------------------------------------------------------------------------------------------------------------
接下来我们讲一下工作区和暂存区
工作区:就是你在电脑里面能看到的目录,例如我下面的text文件夹就属于一个工作区:
版本库:可以看到工作区里面有一个.git,这个不算工作区,而是Git 的版本库,版本库里面有一个极为重要的东西就是称为 stage(index)的暂存区,还有就是Git自动创建的第一个分支master,以及指向master的一个指针HEAD
我们知道我们把文件往Git版本库里添加的时候,是分布执行的:
第一步:用git add命令把文件添加进去,实际上就是把文件修改添加到暂存区里
第二步:用git commit命令提交更改,实际上就是把暂存区所有内容提交到当前分支
因为我们在创建Git版本库时,Git自动创建了一个master分支,所以现在git commit就是往master分支上提交更改
(可简单理解为需要提交的文件修改被放到暂存区,然后一次性提交暂存区的所有修改)
比如我们在对readme.txt文件进行修改(添加一行):
修改完之后我们在工作区新增一个LICENSE文本文件(内容自定),之后用git status命令来查看一下当前状态
我们可以看到readme.txt文件已经被修改了,但是没有提交,并且LICENSE也没有被添加过,他的状态是Untracked
现在我们使用两次git add命令把readme.txt和LICENSE文件进行添加后,再用git status看一下当前状态
现在,暂存区的状态就变成下面这个样纸了
上面的意思就是用git add 命令把文件添加到暂存区,然后在执行git commit命令就可以一次性把暂存区的文件修改提交到分支
提交之后你的工作区是干净的,并且暂存区也没有任何内容了,看看下面那个漂亮的图就知道了
-------------------------------------------------------------------------------------------------------------------
掌握了工作区和暂存区,下面我们来讲一下关于Git管理修改的事情(其实,Git跟踪管理的是修改,而不是文件)
好,我们来分析一下为神马Git跟踪管理的是修改,而不是文件,咳咳:
我们先对readme.txt文件进行一个修改,emmm,加一行东西吧
然后在修改readme.txt
之后git commit命令进行提交
之后git status命令查看一下状态
尴尬了,显示未被提交,为啥呢,我们的操作步骤是第一次修改-->git add-->第二次修改-->git commit
首先Git管理的是修改,git add命令之后,第一次修改被放入到暂存区,但是第二次修改并没有放到暂存区,所以当然没有办法提交了,看来git commit 只负责暂存区的提交
提交之后我们可以用git diff HEAD -- readme.txt命令可以查看一下工作区和版本库里面最新版本的区别:
可以看到第二次并没有被提交,所以要想提交的办法就是:
第一次修改-->git add-->第二次修改-->git add-->git commit
---------------------------------------------------------------------------------------------------------------
下面来说一下如何用Git进行撤销修改的吧
比如,昨晚上喝醉了在文件中添加了一行(My boss is a stupid!):
但是修改之后的文件还没有来的及被提交,第二天起来你突然发现了这个严重的问题,于是你想把它撤销或者删除,这个时候应该怎么办呢?
我们首先用git status命令看一下当前状态:
你会发现命令git checkout 可以丢弃工作区的修改:
(注:git checkout -- readme.txt中的--很重要,没有的--的话,就被“切换到另一个分支的”命令)
上面命令的意思就是把readme.txt文件在工作区的修改全部撤销,撤销会有两种情况:
1.readme.txt文件被修改之后没有被放到暂存区,现在撤销修改就是回到原来版本的状态
2.readme.txt文件被修改之后被放到暂存区,之后又做了修改,现在撤销修改就是回到被放到暂存区之后的状态
总的来说就是撤销一步,回到最近一次git add或git commit
接下来,我们再用命令cat readme.txt看一下文件的内容:
文本被恢复了,/斜眼笑
现在又出现了一种更严重的情况就是我们上面所说的,喝醉了,把文件给git add到暂存区了
但是,注意了,你此时只是把文件给整到暂存区了,还没有commit,此时你发现了这个所谓严重的问题
此时,你用git status查看一下状态:
可以看到显示,修改只是添加到了暂存区,并未提交
Git命令同时也告诉了我们,可以用git reset HEAD
git rest命令既可以退回版本,也可以吧暂存区的修改退回到工作区
此时我们再用git status命令查看一下暂存是应该是干净的,工作区有修改
世界和平,n(*≧▽≦*)n
----------------------------------------------------------------------------------------------------------------
下面我们来讲一下在Git中如何进行删除文件操作,我们直接干吧
首先,我们先添加一个新文件test.txt到Git中并且提交
一般情况,你通常直接在文件管理器里面删除了,或者可以用命令rm删掉
这个时候Git知道你删除了文件,我们再用git status命令查看一下:
我们从上面的命令可以看到test.txt文件被删除了,从而工作区和版本库就不一样了
现在上面有两个选择,第一种就是从版本库里面删除该文件,用git rm删掉,并且git commit
现在版本库里面的文件就被删除了,还有一种情况就是删错文件了,因为版本库里面还有误删文件,所以用命令git checkout可以把误删文件恢复到最新版本
git checkout实际上就是用版本库里面的版本替换工作区的版本,无论工作去删除或者修改,都可以一键还原
土豪,打赏一下博主吧,博主一定会创作出更好的教程!
土豪,打赏一下博主吧,博主一定会创作出更好的教程!