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 分支管理的一些東西。

相關文章
相關標籤/搜索