08月07, 2019

# 手把手跟我做Git系列(三)-- git常用命令

一、前面课程已经使用过的命令

1、和远程相关命令

1.git clone 远程github地址   从远程库地址克隆工程到本地

2.git push -u origin master   将本地的master分支推送到远程

2、本地工作区,暂存区和版本库操作

1.git add  文件名   将代码提交到暂存区

2.git status  查看当前提交的状态

3.git commit -m '注释'  将代码从暂存区提交到版本库

4.git log 查看git日志

二、对比操作

使用命令:git diff --参数

1、工作区文件与暂存区文件对比

大概的意思如下图: -w908

具体操作如下: git_diff -w898

2、对比暂存区与版本库文件的差异

git diff --cached

-w533

3、工作区与版本库文件的差别

git diff master

-w519

最后,将这次的测试全部提交 -w890

讲解其他内容之前,需要先弄清除git log中出现了一些内容的意义

三、git log的版本id

-w618 我们可以根据这些id找到具体的每一次版本的操作,当然,你完全不需要记住或者写完这么长一串,如果以后操作需要用到某个版本id,只需要写上前面几个就可以了,上面的 git log是显示版本的详细信息,如果只需要看简化版信息,可以写成下面这样

git log --oneline

-w459

这里的--oneline参数,就是将每条日志的输出为一行的意思,可以看到版本id也直接简化输出了

当然 git log 命令还有其他很多有用参数,这里就没必要一一讲解了,以后需要用的到时候再去查询就可以了

四、HEAD

-w469

HEAD是什么?简单来说,git是如何知道当前你在哪个版本上工作呢?那是因为,git保存着一个名为 HEAD 的特别指针,你可以把HEAD想象成导游的红旗,红旗在前面显眼的带着路,这个红旗走到哪里,就需要跟到哪里。也就是HEAD在哪里,你就在哪里工作

观察下面的动画: git_head

注意:理解HEAD是我们理解后面版本回退,以及分支的重要概念!

五、版本回退

根据上面的动画,其实就很容易理解版本怎么回退。 我们每提交一个版本,都有版本号,当前版本在哪里,其实就是HEAD的指向在哪里!

-w469

现在HEAD的指向在第二次提交这里,如果我们觉得,这一次提交的版本不是太满意,我们需要撤回到之前的版本,就叫版本回退,由于每次提交的版本都有版本号,其实你想回退到哪个版本,只需要指定具体的版本号就可以了,无论是前进还是后退

命令格式: git reset --hard 版本号 比如:我们想要回退到 第一次提交的版本这里,也就是版本号是7833933的这一个,只需要执行这样的代码:

git reset --hard 7833933

下面是代码的动画演示: git_reset

通过上面的演示可以看出,回退了版本,同时工作区中的内容也就跟着改变了

执行过程动画演示:

git_reset2

当然,如果记不住版本号,也有其他的操作方式,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

git reset --hard 7833933
等同于:
git reset --hard HEAD^

六、查看操作记录

当然,如果说我们使用版本id号回退到之前的版本后,使用git log就再也看不到前面的版本号了,不过不存在,我们可以使用git reflog这条命令的意思是查看所有版本的操作记录

命令格式: git reflog -w633

七、撤销操作

撤销操作其实常见的有三种场景:

场景1、已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

场景2、改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,使用命令:git checkout -- <fileName>,如果有多个文件<fileName>. 代替

下面是动画代码演示: git_checkout_1

场景3、修改的内容已经提交到了暂存区,想要撤销暂存区的内容,使用命令:git reset HEAD <fileName>,如果有多个文件<fileName>. 代替

下面是动画代码演示: git_reset3

八、删除操作

1、工作区的文件可以随意删除

2、如果文件已经提交到暂存区,如下图: -w861

如果想删除暂存区的文件,有两种情况: (1)、同时删除暂存区与工作区的文件,使用命令:git rm -f 文件名

-w914

(2)、只想删除暂存区文件,使用命令:git rm --cached 文件名 -w857 -w953

本文链接:http://www.yanhongzhi.com/post/git-3.html

-- EOF --

Comments