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的意思