7 個改變我生活的 Git 小技巧

大雄45發表於2021-09-28
導讀 Git 是當前最流行最普遍的版本控制系統之一,它被應用於私有系統和公開網站上各種各樣的開發工作。不論我變得對 Git 有多熟悉,似乎總有些功能等待著被髮掘。下面分享下和 Git 相關的改變我工作方式的一些小技巧。
1、Git 中的自動糾錯

我們每個人都不時在輸入時犯拼寫錯誤,但是如果你使能了 Git 的自動糾錯功能,你就能讓 Git 自動糾正一些輸入錯誤的子 。
7 個改變我生活的 Git 小技巧7 個改變我生活的 Git 小技巧
假如你想用  git status 來檢查狀態,但是你恰巧錯誤地輸入了 git stats。通常情況下,Git 會告訴你 ‘stats’ 不是個有效的命令:

$ git statsgit: ‘stats’ is not a git command. See ‘git --help’.The most similar command isstatus

為了避免類似情形,只需要在你的 Git 配置中使能自動糾錯功能。

$ git config --global help.autocorrect 1

如果你只想對當前的倉庫生效,就省略掉選項 --global。

這個命令會使能自動糾錯功能。在相應的 Git 官方文件[1] 中可以看到這個命令的詳細說明,但是試著敲一下上面的錯誤命令會使你對這個設定幹了什麼有個直觀的瞭解:

$ 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 直接執行了它建議命令的第一個,也就是 git status,而不是給你展示它所建議的子命令。

2、對提交進行計數

需要對提交進行計數的原因有很多。例如,一些開發人員利用提交計數來判斷什麼時候遞增工程構建序號,也有一些開發人員用提交計數來對專案進展取得一個整體上的感觀。

對提交進行計數相當簡單而且直接,下面就是相應的 Git 命令:

$ git rev-list --count branch-name

在上述命令中,引數 branch-name 必須是一個你當前倉庫裡的有效分支名。

$ git rev-list –count master32$ git rev-list –count dev34
3、倉庫最佳化

你的程式碼倉庫不僅對你來說很寶貴,對你所在的組織也一樣。透過少數幾個慣例你就能使自己的倉庫整潔並且保持最新。使用 .gitignore 檔案[2] 就是這些最好的慣例之一。透過使用這個檔案你可以告訴 Git 不要儲存一些不需要記錄的檔案,如二進位制檔案、臨時檔案等等。

當然,你還可以使用 Git 的垃圾回收來進一步最佳化你的倉庫。

$ git gc --prune=now --aggressive

這個命令在你和你的團隊經常使用 pull 或者 push 操作的時候很有幫助。

它是一個內部工具,能清理掉你的倉庫裡沒法訪問或者說“空懸”的 Git 物件。

4、給未追蹤的檔案來個備份

大多數時候,刪除所有未追蹤的檔案是安全的。但很多時候也有這麼一種場景,你想刪掉這些未追蹤的檔案同時也想做個備份防止以後需要用到。

Git 組合一些 Bash 命令和管道操作,可以讓你可以很容易地給那些未追蹤的檔案建立 zip 壓縮包。

$ 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 主要透過兩個東西來工作:

當前工作樹(你當前檢出的檔案狀態)
你的 Git 倉庫的資料夾(準確地說,包含版本資訊的 .git 資料夾的位置)
這個資料夾儲存了所有參考資訊和一些其他的如配置、倉庫資料、HEAD 狀態、日誌等更多諸如此類的重要細節。

一旦你刪除了這個資料夾,儘管你的原始碼沒被刪,但是類似你的工程歷史記錄等遠端資訊就沒有了。刪除這個資料夾意味著你的工程(至少本地的複製)不再在版本控制的範疇之內了。這也就意味著你沒法追蹤你的修改;你沒法從遠端倉拉取或推送到遠端倉了。

通常而言,你需要或者應當對你的 .git 資料夾的操作並不多。它是被 Git 管理的,而且大多數時候是一個禁區。然而,在這個資料夾內還是有一些有趣的工件,比如說當前的 HEAD 狀態在內的就在其中。

$ cat .git/HEADref: refs/heads/master

它也隱含著對你倉庫地描述:

$ cat .git/description

這是一個未命名的倉庫;透過編輯檔案 ‘description’ 可以給這個倉庫命名。

Git 鉤子資料夾連同一些鉤子檔案例子也在這裡。參考這些例子你就能知道 Git 鉤子能幹什麼了。當然,你也可以 參考這個 Seth Kenlon 寫的 Git 鉤子介紹[3]。

6、瀏覽另一個分支的檔案

有時,你會想要瀏覽另一個分支下某個檔案的內容。這其實用一個簡單的 Git 命令就可以實現,甚至都不用切換分支。

設想你有一個命名為 README.md[4] 的檔案,並且它在 main 分支上。當前你正工作在一個名為 dev 的分支。

用下面的 Git 命令,在終端上就行。

$ git show main:README.md

一旦你執行這個命令,你就能在你的終端上看到 main 分支上該檔案的內容。

[/yiji]7、Git 中的搜尋[/yiji]
用一個簡單的命令你就能在 Git 中像專業人士一樣搜尋了。更有甚者,儘管你不確定你的修改在哪次提交或者哪個分支上,你依然能搜尋。

$ git rev-list --all | xargs git grep -F ''

例如,假設你想在你的倉庫中搜尋字串 “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;
試試這些小技巧

我希望這些小技巧對你是有用的,或者增加你的生產力或者節省你的大量時間。

你也有一些喜歡的 Git 技巧嗎?在評論區分享吧。

原文來自:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2786073/,如需轉載,請註明出處,否則將追究法律責任。

相關文章