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的文件。

  

 

關於.gitignore文件就不做過多贅述了,忽略文件的規則並不是特別復雜,其中https://github.com/github/gitignore記錄好多種類的.gitignore文件。如下所示:

  

 

 

二、git diff

可以使用git diff來查看未暫存文件的修改情況。下方是使用 git diff 對修改但未暫存的文件的查看。如果你的文件使用了 git add 命令將其添加到了暫存區存儲起來了,那么git diff就看不到已經被暫存起來的文件的修改內容了。

  

 

查看位於暫存區的文件的修改內容可以使用 git diff --cached 或者 使用 git diff --staged 來查看暫存區的修改內容。

  

 

 

三、文件的移除

接下來來看一下如何從git中移除相關的問題,有時我們會直接從磁盤上將文件移除掉,然后此刻需要在git中也將該文件移除掉。下方我們就對之前創建的NewCreateFile文件在磁盤上進行刪除,然后查看一下文件的狀態。可以從下方的截圖中看到,其中是未暫存的Delete狀態。可以使用 git rm 或者 git add 來將刪除的文件添加到緩存區,或者使用 git checkout -- NewCreateFile 來對刪除的文件進行恢復。

  

 

下方是一系列的撤銷操作,將刪除的文件進行恢復:

  • 首先通過 git reset HEAD 文件名 操作從暫存區將已暫存刪除的文件進行撤銷。
  • 然后通過 git checkout -- 文件名 操作將刪除的文件進行恢復

  

 

 

四、通過git mv進行重命名

下方就是通過 git mv操作將NewCreateFile重名為ARenameFile,通過git status查看的狀態是rename,具體如下所示。

git mv NewCreateFile ARenameFile 命令等同於下方的三個命令:

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

  

 

 

五、git log相關內容

1、git log

我們可以使用 git log 命令來查看歷史提交。git log 命令因為其后邊參數的多樣性,使用起來是比較靈活而強大的,並且比較實用。接下來,就來看一下 git log的具體表現。下方就是在Masonry倉庫下使用的 git log 來查看的log日志。默認是由 提交號(commit: 每個提交的哈希值、作者(Author)、修改時間(Date)以及提交時的message組成,如下所示:

  

 

2、git log -p

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

  

 

3、git log --stat

使用 git log --stat 命令來查看簡化版的diff日志信息,如下所示。下方只會給出某個文件增加減少的某個代碼量,而不會給出詳細的修改內容。

  

 

4、git log --graph

git log --graph 命令可以讓log以更直觀的方式來展示。下方是 XMPPFramework 倉庫使用 git log --graph來查看的日志信息,左邊的內容是相關提交的分支合並信息,如下所示:

  

  

5、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常用選項:

  

 

 

六、git commit --amend

首先我們來看一下該命令的演示圖,從下圖中不難看出,使用--amend選項的提交會與最后一次提交進行合並生成一個新的提交,之前的提交會被廢棄掉。

  

 

如果你的文件已經commit了,如下所示。下方是查看的最新一條的commit信息。但是,如果你仍然有文件沒有提交,想追加到最后這個commit上的話,那么就可以使用git commit --amend命令來追加你的提交到最近的一次提交上面(本質上是合並,生成了一個新的commit)。

  

 

下方就是使用git commit --amend操作后的日志,從提交的message中可以看出,確實追加到了上一次提交上。不過通過commit號來看,是一次新的提交,只不過是對上次提交進行和合並,然后覆蓋上次提交。

  

 

 

七、打標簽-Tag

打標簽其實就是給特定的commit做個標記,類似於里程碑的東西。在版本管理中,我們可以為每個版本打個標簽,或者在每次發版時打個標簽,便於后期的查找。下方會列舉一些關於Tag的內容。

 

1、展示所有標簽

可以使用 git tag 來查看所有的標簽。下方是查看了Masonry倉庫中所打的標簽,具體輸出如下所示。可以使用 git tag -l 'v0.6.*' 來查看0.6相關的tag。

  

 

2、創建標簽

創建的標簽包括“輕量標簽”(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的相關信息。具體如下所示:

  

 

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 tag命令就可以給相應的commit補一個tag, 然后我們可以再次使用git log相關命令來查看一下這個后補的tag。

  

 

下方是后補的tag信息,

  

 

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。

  

 

作為上述標簽的push操作后,接下來我們可以去github上相應的倉庫中去查看新增的標簽。下方的 v1.1.1 和 v1.0.1 正是我們之前所創建的tag。

  

 

5、checkout tag 

在我們檢出分支時,在分支的名字后方添加上相應的版本號,即可在該 tag 號所對應的分支上進行checkout。下方的操作就是在 tag: v1.1.1 所對應的分支上 checkout 了一個名為 MyTagTestBrach 的新分支出來。我們可以使用 git show 來查看一下當前分支的最近一次提交信息。從信息中不難看出,其 tag 號就是所對應的 v1.1.1。

關於 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。

  

 

2、查看所設置的別名

可以使用 git config -l 命令來查看你設置過的所有別名。因為之前清理了一波別名,下方就剩這么幾個了。

  

 

3、使用oh-my-zsh插件使用提供的別名插件

oh-my-zsh提供了特別全的Git別名的使用方式,安裝完以后即擁有了好多好用的快捷使用方式。

  

 

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

篇幅有限,本篇博客就先到這兒吧,下篇博客會總結一些 Git 分支管理的一些東西。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM