1. 程式人生 > >git學習筆記2-一些很重要又很初級的命令和技巧(霜之小刀)

git學習筆記2-一些很重要又很初級的命令和技巧(霜之小刀)

git學習筆記2-一些很重要又很初級的命令和技巧(霜之小刀)

歡迎轉載和引用,若有問題請聯絡
若有疑問,請聯絡
Email : [email protected]
QQ:2279557541


本文大量參考了《精通git》 第2版

1、更簡潔的檢視git檔案的狀態

大部分情況下使用git status檢視檔案狀態時列印的資訊過於複雜,不夠簡潔,這是我們應該使用
git status -s
可以得到如下結果

 M a.txt
MM b.txt
A  c.txt
M  d.txt
?? e.txt

這條命令中的

 M
MM
A
M ??

是用來表示檔案的狀態,下面我就介紹下各個字母的含義
這些含義其實是和svn差不多的
M代表已修改
A代表已新增
?表示未跟蹤
而我們看到命令中檔案的狀態其實是分成2列的,其中左側表示是否已暫存,右側表示是否已修改。這樣我們列出的狀態可以解釋為

 M //未暫存,已修改
MM //修改後暫存了,但是又修改了
A  //新新增
M  //修改後暫存了
?? //未新增到版本庫

2、忽略我們不關心的檔案

使用git的時候,有些檔案的狀態我們是不關心的,比如一些編譯的時候生成的臨時檔案.a,.o之類的,一些構建目錄下的檔案啊,我們其實是不想提交到版本庫的,但是如果每次git status -s

的時候都被列出來,我們勢必很煩,這裡就說說如何忽略這些檔案。
在我們clone的根目錄下有一個叫.gitignore的檔案
下面列一堆例子

*.a              #忽略所有的.a型別檔案
!lib.a           #任然跟蹤lib.a即使上一行命令說忽略所有.a檔案
/TODO            #忽略當前目錄的TODO檔案
build/           #忽略build目錄下的所有檔案
doc/*.txt        #忽略doc目錄下的所有txt檔案(不包括子目錄)
doc/**/*.pdf     #忽略doc目錄下的所有txt檔案,包括子目錄

3、檢視未暫存檔案的同未修改時的區別

這個說起來就簡單啦
直接
git diff
可以看到

diff --git a/README.md b/README.md
index d6459e0..0042c20 100644
--- a/README.md
+++ b/README.md
@@ -1 +1 @@
-xxx
+mmmmmmmm
diff --git a/ddd b/ddd
index c5b9640..c554554 100644
--- a/ddd
+++ b/ddd
@@ -1 +1 @@
-aaa\nbbb\n
+uuuu

各種++++—[email protected]@,要看懂其實不難,
但是。。。
沒有直觀的感受,讓我這種雞有些迷茫。。。
於是!我想到了圖形化的對比軟體!
這裡就引出了下一條命令

git difftool

他就會使用圖形化的軟體進行對比(雖然也是在終端裡),這個就要比直接git diff貌似直觀一點。不過這裡還有幾個缺陷,沒gui得我還是用不慣,一個一個的對比我覺得太慢,不方便。。。
於是我這裡隆重介紹下meld!

4、用更直觀的方式檢視區別–meld

首先,安裝meld

brew install Caskroom/cask/xquartz
brew install pygtk
brew cask install caskroom/cask/meld

然後安裝diffall工具
https://github.com/thenigan/git-diffall
下載下來,直接執行。
然後配置git

git config --global diff.tool meld #這一行必須配置difftool對應的工具
git config –global alias.diffall git-diffall#這一行配置一條新命令 diffall

然後使用git difftool將使用meld進行檔案的一一對比。
使用git diffall 將使用meld進行所有更改的對比(好用的一逼!!!)

5、檢視已暫存的檔案同上一次提交的區別

這個就簡單了,我們前面介紹了三種檢視未暫存的區別的命令

git diff
git difftool
git diffall

那麼檢視已暫存的區別的命令,簡單了,就是加–cached

git diff --cached
git difftool --cached
git diffall --cached

6、不使用暫存區

有些人覺得暫存區這個東東意義不大,懶得用,就直接提交就好了,這也是有辦法的
就是

git commit -a -m "提交日誌"

就會將所有已跟蹤的檔案新增到暫存區,然後直接提交

7、刪除git跟蹤的檔案

git rm xxx.xxx

8、移動git跟蹤的檔案

git mv xxx.xx xxx.xx

9、檢視提交歷史

git log -n
這裡要解釋下,如果直接使用git log時將會顯示所有的歷史日誌
如果使用git log -3就會顯示最近的3條日誌,這個就是前面說的-n的意思