Git彙總--常見問題及延伸閱讀
阿新 • • 發佈:2018-12-05
常見問題
忽略檔案
檔案.gitignore
的作用範圍是其所處的目錄及其子目錄。忽略只對未跟蹤檔案有效,對於已加入版本庫的檔案無效!
本地獨享式忽略檔案
- 一種是針對具體版本庫的“獨享式”忽略。即在版本庫
.git
目錄下的一個檔案.git/info/exclude
來設定檔案忽略。 - 另外一種是全域性的“獨享式”忽略。即通過Git的配置變數
core.excludesfile
指定的一個忽略檔案,其設定的忽略對所有檔案均有效。
Git忽略語法
*.a # 忽略所有以 .a 為副檔名的檔案。
!lib.a # 但是 lib.a 檔案或者目錄不要忽略,即使前面設定了對 *.a 的忽略。
/TODO # 只忽略根目錄下的 TODO 檔案,子目錄的 TODO 檔案不忽略。
build/ # 忽略所有 build/ 目錄下的檔案。
doc/*.txt # 忽略檔案如 doc/notes.txt,但是檔案如 doc/server/arch.txt 不被忽略。
- 可以使用萬用字元,參見Linux手冊:glob(7)。例如:星號(*)代表任意多字元,問號(?)代表一個字元,方括號([abc])代表可選字元範圍等。
- 如果名稱的最前面是一個路徑分隔符(/),表明要忽略的檔案在此目錄下,而非子目錄的檔案。
- 如果名稱的最後面是一個路徑分隔符(/),表明要忽略的是整個目錄,同名檔案不忽略,否則同名的檔案和目錄都忽略。
- 通過在名稱的最前面新增一個感嘆號(!),代表不忽略。
檔名大小寫問題
Linux、Solaris、BSD及其他類Unix作業系統使用的是大小寫敏感的檔案系統,而Windows和Mac OS X(預設安裝)的檔案系統則是大小寫不敏感的檔案系統。即用檔名README
、readme
以及Readme
(混合大小寫)進行訪問,在Linux等作業系統上訪問的是不同的檔案,而在Windows和Mac OS X上則指向同一個檔案。換句話說,兩個不同檔案README
和readme
在Linux等作業系統上可以共存,而在Windows和Mac OS X上,這兩個檔案只能同時存在一個,另一個會被覆蓋,因為在大小寫不敏感的作業系統看來,這兩個檔案是同一個檔案。
可以通過設定**core.ignorecase **為false,來開啟檔名大小寫敏感!
$ git config core.ignorecase false
換行符問題
文字檔案的每一行結尾用一個或者兩個特殊的ASCII字元進行標識,這個標識就是換行符。
- LF,“
\\n
”表示:用於Multics、Unix、類Unix(如GNU/Linux、AIX、Xenix、Mac OS X、FreeBSD等)、BeOS、Amiga、RISC OS等作業系統中 - CR,“
\\r
”表示:用於DEC TOPS-10、RT-11和其他早期的非Unix,以及CP/M、MP/M、DOS(MS-DOS、PC-DOS等)、Atari TOS、OS/2、Microsoft Windows、Symbian OS、Palm OS等系統中 - CRLF,“
\\r\\n
”表示:用於Commodore 8位機、TRS-80、蘋果II家族、Mac OS 9及更早版本
$ git config --global core.autocrlf true/input
http://www.worldhello.net/gotgit/08-git-misc/040-eol.html
延伸閱讀
Git的功能極其強大,我們可以使用Git做更多有意義的事情。
-
搜尋工作區內容
$ git grep '搜尋內容'
-
子模組管理
-
打包
-
補丁
-
hooks
-
檔案追述
git blame <filename>
-
二分查詢,快速定位版本問題,配合自動化測試無敵
git bisect
-
檔案歸檔
git archive
-
檢查丟失的提交
git fsck --lost-found
-
Git工作流:https://github.com/xirong/my-git/blob/master/git-workflow-tutorial.md
-
…