相見恨晚!Git這些功能太好用了!
:
作為一名開發(fā)者,想必絕大多數(shù)同學(xué)都無法繞開Git。
作為一款工具,我認(rèn)為它和word、powerpoint、Excel這些辦公工具一樣。
對于一部分同學(xué),會一些基本的用法,能夠解決日常工作中遇到的簡單問題。對一部分同學(xué),能夠深入了解并學(xué)習(xí)這款工具,在工作中很多方面能夠更高效的處理面對的問題。
git也是這樣,很多同學(xué)可能大多數(shù)時候用到的就是克隆、提交、推送、合并這些基礎(chǔ)操作,每天按部就班、反反復(fù)復(fù)的執(zhí)行這幾個命令,也沒有考慮過如何更加高效的使用。
但是,如果仔細(xì)琢磨,會發(fā)現(xiàn)git使用過程中有很多可以提升效率的地方,即便是很簡單的場景也可以用到。
今天,就來給大家介紹一些Git使用過程中非常好用的「奇技淫巧」!
1. 編輯器
git commit應(yīng)該大多數(shù)同學(xué)都會用到,這是一個非?;A(chǔ)的操作。
當(dāng)我們提交的信息比較少時,可以這樣:

然而,當(dāng)寫的提交信息比較長時就沒這么簡單了。需要帶上標(biāo)題、描述等。這時候,用編輯器會更加合適。
但是,vim時git默認(rèn)的文本編輯器,作為初學(xué)者,git還沒熟練呢,再加上vim無疑是增大了學(xué)習(xí)成本。
這時候我們可以更改默認(rèn)編輯器,可以執(zhí)行下面命令:

確保在終端中運行 <editor-name> 能夠打開編輯器,例如 vim 、 nano 或 VS Code。

對于 VS Code,需要添加另一個參數(shù)來指示 git 等待當(dāng)前編輯器窗口關(guān)閉再啟動新窗口。
2. 配置文件
Git 有 3 個配置文件:
系統(tǒng)上的每個用戶單獨一個,可以使用 --system 設(shè)置
針對特定用戶,可以使用 --global 進(jìn)行設(shè)置
用于正在使用 git 的倉庫庫,可以使用 --local 進(jìn)行設(shè)置
這些文件相互覆蓋,即,當(dāng)使用 --local 設(shè)置的變量將覆蓋全局配置,而后者又將覆蓋系統(tǒng)配置。
我們在設(shè)置名稱、電子郵件或編輯器等內(nèi)容時使用 —global,以便它反映在我們的每個 git 存儲庫中。
要檢查當(dāng)前的設(shè)置,可以運行:

3. 淺克隆
如果你正在合作開發(fā)一個需要時間和內(nèi)存來克隆的大型代碼倉庫,那么淺克隆會非常有幫助。

上圖中,time 可以用來檢查一個命令運行了多長時間,du 可以用來檢查一個文件夾消耗了多少內(nèi)存。
從上面我們可以看出,克隆fastai repo大約需要28秒、902M內(nèi)存。
現(xiàn)在讓我們嘗試只克隆最新的提交:

克隆不到 2 秒,僅消耗 1.1M 內(nèi)存。
4. ?簡化Git狀態(tài)
git status 是一個非常有用的命令,用于檢查存儲庫中所有文件的狀態(tài),它們是否未跟蹤、已修改、暫存等。
但是,如果你有很多文件,例如,在重新格式化一堆文件的存儲庫中運行預(yù)提交,輸出可能會變得冗長:

對于這種問題,我們可以使用 --short 或 -s 來簡化輸出:

這樣看是不是清晰多了?
M- 已被 git 跟蹤的文件,現(xiàn)在已被修改
A- 已添加到暫存區(qū)的文件
??- 未跟蹤的文件/文件夾
5. 忽略
假設(shè)你正在從事深度學(xué)習(xí)項目,并且你有包含數(shù)據(jù)的 train_images 和 test_images 文件夾,在提交倉庫時,肯定不希望把這些數(shù)據(jù)一起提交上去吧?
但是,在名為 assets 的文件夾中也有圖像,其中包含要在 GitHub README 中顯示的圖像:

針對這種問題 ,我們可以把要忽略的內(nèi)容添加到.gitignore文件中,這樣在提交時就會被忽略:

但是,可能在一堆不同的位置有圖像,這樣可以改用正則表達(dá)式:

這會遞歸地搜索文件夾和子文件夾中的圖像并忽略所有這些圖像。 但是,請記住我們不想忽略文件夾 assets 中的圖像。

我們可以在 .gitignore 中使用 ! 排除掉不需要被忽略的內(nèi)容。
6. 查看Git日志
如果你想查看有限數(shù)量的提交,你可以使用 -<n> 參數(shù):

我們還可以使用 --since 或 --until 根據(jù)時間段過濾掉不需要看的提交信息:

除此之外,還可以使用 --grep 或 —author 來搜索指定提交:

從前面介紹的6個Git用法可以看出,它們并不是非常高深的用法,使用難度也不高。之所以有些同學(xué)會用、有些同學(xué)不會用,主要因為信息差,或者沒有考慮到這些場景。
然而,通過這些「奇技淫巧」可以大大提升我們使用Git的體驗,也能夠極大提高工作效率。
建議大家有空可以多瀏覽Github,有很多好用的開源免費工具。但是,目前Github上項目多如牛毛,而且刷榜現(xiàn)在也非常嚴(yán)重,想要找到優(yōu)質(zhì)的項目變得越來越難。這里,給大家推薦Github上一個非常不錯的項目《DevWeekly》,這個項目每周都會精挑細(xì)選一些優(yōu)質(zhì)的開源項目,涵蓋C++、JAVA、JavaScript、Python、Go等不同編程語言。此外,還有一些開源工具、優(yōu)秀的技術(shù)文章,而且考慮到很多同學(xué)訪問Github不方便的問題,我還特意同步到了Gitee,建議大家看一下:
hello,大家好,我是Jackpop,重點大學(xué)本科畢業(yè)后保送到哈工大計算數(shù)學(xué)專業(yè)讀研,有多年國內(nèi)頭部互聯(lián)網(wǎng)、IT公司工作經(jīng)驗,先后從事過計算機(jī)視覺、推薦系統(tǒng)、后端、數(shù)據(jù)等相關(guān)工作。如果同學(xué)們在升學(xué)考研、職業(yè)規(guī)劃、高考志愿、簡歷優(yōu)化、技術(shù)學(xué)習(xí)