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

时间:2023-03-08 17:27:52
Git知识总览(二) git常用命令概览

上篇博客我们从 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的文件。

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

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

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

二、git diff

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

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

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

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

三、文件的移除

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

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

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

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

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

四、通过git mv进行重命名

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

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

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

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

五、git log相关内容

1、git log

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

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

2、git log -p

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

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

3、git log --stat

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

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

4、git log --graph

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

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

5、git log --pretty

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

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

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

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

下方是格式的常用选项:

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

下方是git log常用选项:

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

 

六、git commit --amend

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

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

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

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

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

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

七、打标签-Tag

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

1、展示所有标签

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

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

2、创建标签

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

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

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

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

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。

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

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

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

下方是后补的tag信息,

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

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。

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

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

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

5、checkout tag 

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

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

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

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

八、配置 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。

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

2、查看所设置的别名

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

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

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