首页 >程序人生

Git知识总览(二) git常用命令概览

2018-01-11 16:01 编辑: 枣泥布丁 分类:程序人生 来源:青玉伏案

上篇博客我们从 git clone 和 git status 两个命令开始,引出了一系列的git操作命令, 请参见:《Git知识总览(一) 从 git clone 和 git status 谈起》。上篇博客中所涉及的git命令也是git命令操作中常用的基础操作命令,本篇博客继续来总结一下git使用时常用的命令操作以及其他相关基础知识。

下方是本篇博客所会涉及的内容:

  • .gitignore文件的配置

  • 使用 git diff 来查看修改的内容

  • git 中文件移除 -- git rm

  • git 中的文件重命名 -- git mv

  • 查看git提交日志的一些了操作 -- git log

  • 往提交中追加文件的操作 -- git commit --amend

  • Git打标签操作 -- git tag

  • git 中别名的设置(aliase)

一、.gitignore

接下来来看一下git仓库中的 .gitignore文件,在该文件中记录了那些不被git管理的被忽略的文件。.gitignore中根据glob模式匹配规则来忽略一些文件,glob模式匹配是shell所使用的简化了的正则表达式。可以说glob的匹配规则和正则匹配差不多。

首先我们先看一个.gitignore的示例,上篇博客我们Clone了Masonry仓库,现在我们就来看一下Masonry中的.gitignore的内容。接下来我们就根据该示例来解读一下下方的忽略规则。

  • # :井号(#)用来添加注释用的,比如 "#注释"。

  • build/* : 星号(*)是通配符,build/*则是要说明要忽略 build 文件夹下的所有内容。

  • *.pbxuser : 表示要忽略后缀名为.pbxuser的文件。

  • !default.pbxuser : 感叹号(!)是取反的意思,*.pbxuser 表示忽略所有后缀名为.pbxuser的文件,如果加上!default.pbxuser则表示,除了default.pbxuse忽略其它后缀名为pbxuse的文件。

545446-20171217204919389-1279313034.png

关于.gitignore文件就不做过多赘述了,忽略文件的规则并不是特别复杂,其中https://github.com/github/gitignore记录好多种类的.gitignore文件。如下所示:

545446-20171217210457374-775878233.png

二、git diff


可以使用git diff来查看未暂存文件的修改情况。下方是使用 git diff 对修改但未暂存的文件的查看。如果你的文件使用了 git add 命令将其添加到了暂存区存储起来了,那么git diff就看不到已经被暂存起来的文件的修改内容了。

545446-20171217210958874-1366062436.png

查看位于暂存区的文件的修改内容可以使用 git diff --cached 或者 使用 git diff --staged 来查看暂存区的修改内容。

545446-20171217211442124-327733523.png

三、文件的移除

接下来来看一下如何从git中移除相关的问题,有时我们会直接从磁盘上将文件移除掉,然后此刻需要在git中也将该文件移除掉。下方我们就对之前创建的NewCreateFile文件在磁盘上进行删除,然后查看一下文件的状态。可以从下方的截图中看到,其中是未暂存的Delete状态。可以使用 git rm 或者 git add 来将删除的文件添加到缓存区,或者使用 git checkout -- NewCreateFile 来对删除的文件进行恢复。

545446-20171217212134014-993559435.png

下方是一系列的撤销操作,将删除的文件进行恢复:

  • 首先通过 git reset HEAD 文件名 操作从暂存区将已暂存删除的文件进行撤销。

  • 然后通过 git checkout -- 文件名 操作将删除的文件进行恢复

545446-20171217213453639-71971061.png

四、通过git mv进行重命名

下方就是通过 git mv操作将NewCreateFile重名为ARenameFile,通过git status查看的状态是rename,具体如下所示。

git mv NewCreateFile ARenameFile 命令等同于下方的三个命令:

  • mv NewCreateFile ARenameFile

  • git rm NewCreateFile

  • git add ARenameFile

545446-20171217214034358-1149781697.png

五、git log相关内容

1、git log

我们可以使用 git log 命令来查看历史提交。git log 命令因为其后边参数的多样性,使用起来是比较灵活而强大的,并且比较实用。接下来,就来看一下 git log的具体表现。下方就是在Masonry仓库下使用的 git log 来查看的log日志。默认是由 提交号(commit: 每个提交的哈希值、作者(Author)、修改时间(Date)以及提交时的message组成,如下所示:

545446-20171217214709780-1504277094.png

2、git log -p

使用 git log -p -1来查看最近一次提交的差异,当然也可以使用 git log -p 来查看所有的差异。下方是查看了最近一次提交的差异。

545446-20171217220345968-1418143705.png

3、git log --stat

使用 git log --stat 命令来查看简化版的diff日志信息,如下所示。下方只会给出某个文件增加减少的某个代码量,而不会给出详细的修改内容。

545446-20171217222201796-1443621970.png

4、git log --graph

git log --graph 命令可以让log以更直观的方式来展示。下方是 XMPPFramework 仓库使用 git log --graph来查看的日志信息,左边的内容是相关提交的分支合并信息,如下所示:

545446-20171217223909374-557109877.png

5、git log --pretty

git log --pretty=oneline 可以让每次的commit在一行上显示,如下所示。每一行就是一个commit,前方是commit所对应的hash值,后方是commit所对应的message。

545446-20171217222854499-371671613 (1).png

我们还可以使用git log --pretty来定义显示格式,下方内容是“ git log --graph --pretty=format:"%h - %an, %ar : %s" ”命令的输出内容, --pretty=format:后边跟着的是格式化的字符串。其中 %h 表示简化版的Hash值, %an 表示作者名字(Author Name), %ar 表示多久以前提交的,%s 则是提交信息。

1.png

下方是格式的常用选项:

545446-20171217225348186-1486393374.png

下方是git log常用选项:

545446-20171217225607155-1796954094.png

六、git commit --amend

首先我们来看一下该命令的演示图,从下图中不难看出,使用--amend选项的提交会与最后一次提交进行合并生成一个新的提交,之前的提交会被废弃掉。

545446-20180101223922065-2026769723.gif

如果你的文件已经commit了,如下所示。下方是查看的最新一条的commit信息。但是,如果你仍然有文件没有提交,想追加到最后这个commit上的话,那么就可以使用git commit --amend命令来追加你的提交到最近的一次提交上面(本质上是合并,生成了一个新的commit)。

545446-20171217231044530-1158705748.png

下方就是使用git commit --amend操作后的日志,从提交的message中可以看出,确实追加到了上一次提交上。不过通过commit号来看,是一次新的提交,只不过是对上次提交进行和合并,然后覆盖上次提交。

545446-20171217231815374-964543925.png

七、打标签-Tag

打标签其实就是给特定的commit做个标记,类似于里程碑的东西。在版本管理中,我们可以为每个版本打个标签,或者在每次发版时打个标签,便于后期的查找。下方会列举一些关于Tag的内容。

1、展示所有标签

可以使用 git tag 来查看所有的标签。下方是查看了Masonry仓库中所打的标签,具体输出如下所示。可以使用 git tag -l 'v0.6.*' 来查看0.6相关的tag。

545446-20171220200706709-825508188.png

2、创建标签

创建的标签包括“轻量标签”(lightweight)和 “辅助标签”(annotated)。轻量标签之所以轻量是因为它只是一个特定commit的引用。而“附注标签”是存储在git数据库中的一个完整对象。可以使用git tag -a 版本号 -m 'tag 信息'来创建“轻量标签”。下方命令就创建了一个轻量标签,并且使用git tag进行展示。

545446-20171220201602803-1212639027.png

我们可以使用 git show v1.1.1 来查看v1.1.1处的相关信息。下方就是tag v1.1.1出的相关信息,其中包括tag的创建人和创建信息以及打tag时的message,并且还会有该tag所对应的commit的相关信息。具体如下所示:

545446-20171220201816646-472296411.png

3、给之前的commit创建tag

如果你想给之前的某个commit打一个tag, 那么只需要将commit号追加到打标签的命令后方即可,如:git tag -a vx.x.x -m 'message' commit-hash。

在下方截图中我们使用了 git log --pretty=oneline 命令查看的所有提交。在下方信息中,我们可以看到之前的所有的tag号以及所对应的commit号。现在我们要在画红框的commit上创建一个tag, 并命名相关的tag号为 v1.0.1。

545446-20171220202306287-1077829923.png

通过下方的git tag命令就可以给相应的commit补一个tag, 然后我们可以再次使用git log相关命令来查看一下这个后补的tag。

545446-20171220202801787-1842122490.png

下方是后补的tag信息,

545446-20171220202930928-65037856.png

4、将标签push到远端

上面创建的标签都是在本地所做的,可以通过 push 命令来将创建好的某些tag或者所有的tag使用push命令进行共享。下方是关于push相关tag的一系列操作:

  • 首先我们使用 git remote show 来查看所有的远端,如下所示为origin。

  • 然后我们可通过 git push origin v1.0.1 的命令格式将 tag 号为 v1.0.1 的标签push到远端origin。push成功后,会提示在相应的远端创建了一个新的标签。

  • 最后可以使用 git push origin --tags 命令将本地创建的所有 tag 推送到远端origin。

545446-20171221081215725-1417731315.png

作为上述标签的push操作后,接下来我们可以去github上相应的仓库中去查看新增的标签。下方的 v1.1.1 和 v1.0.1 正是我们之前所创建的tag。

545446-20171221081757396-701670022.png

5、checkout tag 

在我们检出分支时,在分支的名字后方添加上相应的版本号,即可在该 tag 号所对应的分支上进行checkout。下方的操作就是在 tag: v1.1.1 所对应的分支上 checkout 了一个名为 MyTagTestBrach 的新分支出来。我们可以使用 git show 来查看一下当前分支的最近一次提交信息。从信息中不难看出,其 tag 号就是所对应的 v1.1.1。

关于 Git 的分支的关联,下篇博客将会详细的聊一下 Git 分支管理的东西。

545446-20171221082151396-132104727.png

545446-20171221082225271-284037006.png

八、配置 Git 别名

1、别名的设置

在使用 git 命令时,如果你觉的 commit、checkout 等命令太长,每次输入全称太繁琐。在 git 中可以给一些命令添加一些别名,然后同这些别名来更为简洁的去操作git。下方就通过一个小示例来看一下git的别名。

  • 使用 git config --global aliase.zhuangtai 给 status 命令创建了一个 zhuangtai 的别名。

  • 在使用使用 git zhuangtai 命令时,就等同于 gitstatus 命令。(此处尝试了一下用我大中华的汉字来做别名,可惜不支持,就用拼音来test了)

  • 当然一般不推荐用拼音呢,还是用其英文命令的的缩写比较好,比如 status 可以定义为 st, checkout 为 co,等等。下方又给 status 设置了其他的一个别名 st。

  • 同一个命令的别名是可以同时存在的,可以使用 git zhuangtai、也可以使用 git st。

545446-20171221083427865-1520323501.png

2、查看所设置的别名

可以使用 git config -l 命令来查看你设置过的所有别名。因为之前清理了一波别名,下方就剩这么几个了。

545446-20171221084232537-1015186608.png

篇幅有限,本篇博客就先到这儿吧,下篇博客会总结一些 Git 分支管理的一些东西。

搜索CocoaChina微信公众号:CocoaChina
微信扫一扫
订阅每日移动开发及APP推广热点资讯
公众号:
CocoaChina
我要投稿   收藏文章
上一篇:哪个中年IT男不是一边面对危机,一边咬牙硬抗
下一篇:可能是最全面的国内外知名404页面盘点
我来说两句
发表评论
您还没有登录!请登录注册
所有评论(0

综合评论

相关帖子

sina weixin mail 回到顶部