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

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

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

  • .gitignore文件的配置
  • 使用 git diff 来查看修改的内容
  • git 中文件移除 -- git rm
  • git 中的文件重命名 -- git mv
  • 查看git提交日志的一些了操做 -- git log
  • 往提交中追加文件的操做 -- git commit --amend
  • Git打标签操做 -- git tag
  • git 中别名的设置( aliase

 

 

1、.gitignoregithub

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

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

  • # :井号(#)用来添加注释用的,好比 "#注释"。
  • build/* : 星号(*)是通配符,build/*则是要说明要忽略 build 文件夹下的全部内容。
  • *.pbxuser : 表示要忽略后缀名为.pbxuser的文件。
  • !default.pbxuser : 感叹号(!)是取反的意思,*.pbxuser 表示忽略全部后缀名为.pbxuser的文件,若是加上!default.pbxuser则表示,除了default.pbxuse忽略其它后缀名为pbxuse的文件。

  

 

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

  

 

 

2、git diff缓存

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

  

 

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

  

 

 

3、文件的移除url

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

  

 

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

  • 首先经过 git reset HEAD 文件名 操做从暂存区将已暂存删除的文件进行撤销。
  • 而后经过 git checkout -- 文件名 操做将删除的文件进行恢复

  

 

 

4、经过git mv进行重命名

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

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

  • mv NewCreateFile ARenameFile
  • git rm NewCreateFile
  • git add ARenameFile

  

 

 

5、git log相关内容

一、git log

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

  

 

二、git log -p

使用 git log -p -1来查看最近一次提交的差别,固然也可使用 git log -p 来查看全部的差别。下方是查看了最近一次提交的差别。

  

 

三、git log --stat

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

  

 

四、git log --graph

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

  

  

五、git log --pretty

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

  

 

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

  

 

下方是格式的经常使用选项:

  

 

下方是git log经常使用选项:

  

 

 

6、git commit --amend

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

  

 

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

  

 

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

  

 

 

7、打标签-Tag

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

 

一、展现全部标签

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

  

 

二、建立标签

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

  

 

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

  

 

三、给以前的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。

  

 

经过下方的git tag命令就能够给相应的commit补一个tag, 而后咱们能够再次使用git log相关命令来查看一下这个后补的tag。

  

 

下方是后补的tag信息,

  

 

四、将标签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。

  

 

做为上述标签的push操做后,接下来咱们能够去github上相应的仓库中去查看新增的标签。下方的 v1.1.1 和 v1.0.1 正是咱们以前所建立的tag。

  

 

五、checkout tag 

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

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

  

  

 

 

8、配置 Git 别名

一、别名的设置

在使用 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。

  

 

二、查看所设置的别名

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

  

 

三、使用oh-my-zsh插件使用提供的别名插件

oh-my-zsh提供了特别全的Git别名的使用方式,安装完之后即拥有了好多好用的快捷使用方式。

  

 

地址(https://github.com/robbyrussell/oh-my-zsh/blob/master/plugins/git/git.plugin.zsh) 

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

相关文章
相关标签/搜索