改變我使用 Git 工作方式的七個技巧
這些有用的技巧將改變你使用這個流行的版本控制系統(tǒng)的工作方式。
Git 是目前最常見的版本控制系統(tǒng)之一,無論是私有系統(tǒng)還是公開托管的網(wǎng)站,都在使用它進行各種開發(fā)工作。但無論我對 Git 的使用有多熟練,似乎總有一些功能還沒有被發(fā)現(xiàn),下面是改變我使用 Git 工作方式的七個技巧。
1、Git 中的自動更正
我們有時都會打錯字,但如果啟用了 Git 的自動更正功能,就可以讓 Git 自動修正打錯的子命令。
假設(shè)你想用 git status 檢查狀態(tài),卻不小心輸入了 git stats。正常情況下,Git 會告訴你 stats 不是一條有效的命令:
$ git statsgit: ‘stats’ is not a git command. See ‘git --help’.The most similar command isstatus
為了避免類似的情況發(fā)生,請在 Git 配置中啟用 Git 自動更正功能:
$ git config --global help.autocorrect 1
如果你希望這個命令只適用于你當(dāng)前的版本庫,請省略 --global 選項。
這條命令啟用了自動更正功能。更深入的教程可以在 Git Docs 中找到,但嘗試一下和上面一樣的錯誤命令,就能很好地了解這個配置的作用:
$ git statsgit: ‘stats’ is not a git command. See ‘git --help’.On branch masterYour branch is up to date with ‘origin/master’.nothing to commit, working tree clean
Git 現(xiàn)在不會建議使用其他子命令,而是直接運行最上面的建議,在本例中是 git status。
2、計算你的提交量
你需要計算提交數(shù)量可能有很多原因。例如,許多開發(fā)者通過計算提交數(shù)量來判斷何時該增加構(gòu)建版本號,或者只是想了解項目的進展情況。
要計算提交數(shù)量其實很簡單直接,下面是 Git 的命令:
$ git rev-list --count branch-name
在上面的命令中,branch-name 應(yīng)該是當(dāng)前版本庫中有效的分支名稱:
$ git rev-list –count master32$ git rev-list –count dev34
3、優(yōu)化你的倉庫
你的代碼倉庫不僅對你有價值,對你的組織也有價值。你可以通過一些簡單的做法來保持你的版本庫的清潔和更新。其中一個最好的做法是 使用 .gitignore 文件。使用這個文件,就是告訴 Git 不要存儲許多不需要的文件,比如二進制文件、臨時文件等等。
為了進一步優(yōu)化你的版本庫,你可以使用 Git 的垃圾收集功能:
$ git gc --prune=now --aggressive
當(dāng)你或你的團隊大量使用 pull 或 push 命令時,這條命令就會起到幫助作用。
這個命令是一個內(nèi)部工具,可以清理倉庫中無法訪問或 “孤兒” Git 對象。
4、備份未被跟蹤的文件
大多數(shù)時候,刪除所有未被跟蹤的文件是安全的。不過很多時候,你不僅要刪除,還要為你的未跟蹤文件創(chuàng)建一個備份,以備以后需要。
通過 Git 和一些 Bash 命令管道,可以很容易地為你的未被跟蹤的文件創(chuàng)建一個壓縮包:
$ git ls-files --others --exclude-standard -z |\xargs -0 tar rvf ~/backup-untracked.zip
上面的命令制作了一個名為 backup-untracked.zip 的存檔(并排除了 .gitignore 中列出的文件)。
5、了解你的 .git 文件夾
每個版本庫都有一個 .git 文件夾。它是一個特殊的隱藏文件夾。
$ ls -a. … .git
Git 的工作主要依賴于兩個部分:
- 工作樹(你當(dāng)前簽出的文件狀態(tài))。
 - 你的 Git 倉庫的路徑(即你的 
.git文件夾的位置,其中包含版本信息)。 
這個文件夾存儲了所有的引用和其他重要的細節(jié),比如配置、倉庫數(shù)據(jù)、HEAD 狀態(tài)、日志等等。
如果你刪除這個文件夾,你的源代碼的當(dāng)前狀態(tài)不會被刪除,但你的遠程信息,如你的項目歷史記錄,會被刪除。刪除這個文件夾意味著你的項目(至少是本地副本)不再處于版本控制之下。這意味著你不能跟蹤你的變化;你不能從遠程拉取或推送。
一般來說,不需要在 .git 文件夾里做什么,也沒有什么應(yīng)該做的。它是由 Git 管理的,基本上被認為是個禁區(qū)。然而,這個目錄里有一些有趣的工件,包括 HEAD 的當(dāng)前狀態(tài)。
$ cat .git/HEADref: refs/heads/master
它還可能包含對你的存儲庫的描述:
$ cat .git/description
這是一個未命名的倉庫,編輯這個 description 文件可以命名這個倉庫。
Git 鉤子文件夾(hooks)也在這里,里面有一些鉤子示例文件。你可以閱讀這些示例來了解通過 Git 鉤子可以實現(xiàn)什么,你也可以 閱讀 Seth Kenlon 的 Git 鉤子介紹。
6、查看另一個分支的文件
有時你想查看另一個分支的文件的內(nèi)容。用一個簡單的 Git 命令就可以實現(xiàn),而且不需要切換分支。
假設(shè)你有一個名為 README.md 的文件,它在 main 分支中,而你正在 dev 分支上工作。
使用下面的 Git 命令,你可以在終端上完成:
$ git show main:README.md
一旦你執(zhí)行了這個命令,你就可以在你的終端上查看文件的內(nèi)容。
7、在 Git 中搜索
只需一個簡單的命令,你就可以像專業(yè)人士一樣在 Git 中搜索。更棒的是,即使你不確定是在哪個提交或分支上做的修改,也可以在 Git 中搜索。
$ git rev-list --all | xargs git grep -F 'string'
例如,假設(shè)你想在你的版本庫中搜索 font-size: 52 px; 這個字符串:
$ git rev-list –all | xargs git grep -F 'font-size: 52 px;'F3022…9e12:HtmlTemplate/style.css: font-size: 52 px;E9211…8244:RR.Web/Content/style/style.css: font-size: 52 px;
試試這些技巧
希望這些高級技巧對你有用,提高你的工作效率,為你節(jié)省很多時間。















 
 
 









 
 
 
 