git CLI提供了大量的git命令,以使開發(fā)人員更輕松地進(jìn)行軟件開發(fā)。為了方便讀者,我們的編輯人員概述了一些最有用的命令。因此,請(qǐng)繼續(xù)閱讀并按照自己的節(jié)奏發(fā)現(xiàn)它們。
21、將標(biāo)簽添加到您的項(xiàng)目
標(biāo)簽使您可以標(biāo)記開源項(xiàng)目中的重要事件。開發(fā)人員經(jīng)常使用它們來(lái)標(biāo)記新的復(fù)發(fā)或錯(cuò)誤修復(fù)。請(qǐng)仔細(xì)查看以下git命令,以了解如何使用git將標(biāo)簽添加到項(xiàng)目中。
linuxidc@Ubuntu:~/www.linuxidc.com$ git tag 1.0.0 new-linuxidc
linuxidc@ubuntu:~/www.linuxidc.com$ git tag 1.0.0 new-linuxidc
fatal: 標(biāo)簽 ‘1.0.0’ 已存在
此命令將標(biāo)簽1.0.0添加到特定的提交。您可以使用以下命令獲取commit-id(new-linuxidc)。
linuxidc@ubuntu:~/www.linuxidc.com$ git log
commit 482b4bebada278b29001338411de7c42743065d5 (HEAD -> new-linuxidc, tag: 1.0.0, master)
Author: linuxidc <root@linuxidc.net>
Date: Thu Apr 30 14:21:46 2020 +0800
Linuxidc Commit
使用以下命令將標(biāo)簽推送到您的遠(yuǎn)程倉(cāng)庫(kù)中。
linuxidc@ubuntu:~/www.linuxidc.com$ git push origin –tags
您需要明確指定–tags選項(xiàng)。否則,標(biāo)簽只會(huì)添加到您的本地倉(cāng)庫(kù)中,而不會(huì)添加到遠(yuǎn)程倉(cāng)庫(kù)中。
22、獲取遠(yuǎn)程數(shù)據(jù)
您將經(jīng)常使用的另一個(gè)常見git命令是fetch。由于許多原因,它非常有用。首先,訪存僅檢索新數(shù)據(jù)/引用,而不將它們合并到本地分支。因此,您可以放心,本地倉(cāng)庫(kù)的工作副本將保持安全可靠。
linuxidc@ubuntu:~/www.linuxidc.com$ git fetch origin
這是檢查遠(yuǎn)程代碼庫(kù)最新進(jìn)度而又不破壞項(xiàng)目自己版本的絕佳方法。一旦確定所有新數(shù)據(jù)都可以使用,只需將它們合并到本地分支即可。
23、恢復(fù)未提交的更改
git restore命令允許開發(fā)人員恢復(fù)其項(xiàng)目中所有未提交的更改。這些是您對(duì)項(xiàng)目的工作版本或本地索引中的內(nèi)容所做的更改。您可以使用此命令來(lái)還原工作副本中的更改或索引中的更改,或者同時(shí)執(zhí)行這兩個(gè)操作。
linuxidc@ubuntu:~/www.linuxidc.com$ git restore –staged linuxidc1.py
linuxidc@ubuntu:~/www.linuxidc.com$ git restore –source=HEAD –staged –worktree linuxidc1.py
第一個(gè)命令將還原索引中的文件linuxidc1.py,第二個(gè)命令將還原索引和項(xiàng)目的當(dāng)前工作目錄。
24、刪除文件
有時(shí),您可能希望從工作樹或項(xiàng)目索引中完全刪除一些文件。您可以使用git rm命令來(lái)執(zhí)行此操作。但是,此命令不會(huì)從您的工作目錄中刪除指定的文件。使用Linux rm命令執(zhí)行此操作。
$ git rm *.py
$ git rm -r dir/
$ git rm –cached *.py
第一條命令從工作樹和索引中刪除所有py文件。第二個(gè)命令從dir/目錄中刪除所有內(nèi)容。最后一條命令將僅從索引而不是工作樹中刪除所有py文件。
25、移動(dòng)或重命名文件
您可以使用git移動(dòng)或重命名文件,就像使用Linux mv命令一樣。
git mv linuxidc1.py linuxidc11.py
上面的命令只是執(zhí)行以下Linux操作。
$ mv test.py new-test.py
$ git add new-test.py
$ rm test.py
因此,您可以使用git mv命令來(lái)避免輸入大量額外的Linux終端命令。
在git中移動(dòng)和重命名文件
26、清理未跟蹤的文件
未跟蹤的文件是不在git版本控制系統(tǒng)下的文件。在進(jìn)行大型項(xiàng)目時(shí),您經(jīng)常會(huì)偶然發(fā)現(xiàn)此類文件。您可以使用幾種方法刪除它們,包括git reset和git checkout。但是,使用git clean命令是最合適的方法。
linuxidc@ubuntu:~/www.linuxidc.com$ git clean
fatal: clean.requireForce 默認(rèn)為 true 且未提供 -i、-n 或 -f 選項(xiàng),拒絕執(zhí)行清理動(dòng)作
上面的命令失敗,因?yàn)檫@是在我的系統(tǒng)中配置git的方式。您可以通過添加-n,-i或-f選項(xiàng)來(lái)解決此問題。
linuxidc@ubuntu:~/www.linuxidc.com$ git clean -n
27、優(yōu)化本地倉(cāng)庫(kù)
我最喜歡的git命令之一是gc。它用于垃圾收集,將幫助您減小本地倉(cāng)庫(kù)的大小。如果您正在處理大量項(xiàng)目,則應(yīng)經(jīng)常使用此命令。
linuxidc@ubuntu:~/www.linuxidc.com$ git gc
枚舉對(duì)象: 10, 完成.
對(duì)象計(jì)數(shù)中: 100% (10/10), 完成.
壓縮對(duì)象中: 100% (10/10), 完成.
寫入對(duì)象中: 100% (10/10), 完成.
總共 10 (差異 0),復(fù)用 0 (差異 0)
git gc命令運(yùn)行得非常快,并清理了本地倉(cāng)庫(kù)中所有不必要的文件。由于其速度和效率,它是最佳的優(yōu)化方法之一。您也可以使用–aggressive選項(xiàng)來(lái)增加優(yōu)化。但是,這將需要更多時(shí)間才能完成。
28、存檔本地倉(cāng)庫(kù)
您可以使用git archive命令輕松地歸檔本地倉(cāng)庫(kù)。它允許開發(fā)人員將他們的項(xiàng)目安全地存儲(chǔ)在某個(gè)地方。您可以通過網(wǎng)絡(luò)傳輸此存檔,也可以將其存儲(chǔ)在Linux文件系統(tǒng)上。
linuxidc@ubuntu:~/www.linuxidc.com$ git archive –output=test –format=tar master
上面的命令將倉(cāng)庫(kù)存儲(chǔ)在名為test的tar文件中。如果需要,可以省略–format選項(xiàng)。在這種情況下,git將嘗試從名稱中推斷出存檔格式。此命令還有更多選項(xiàng)可用。
29、搜索模式
在大型項(xiàng)目中工作時(shí),通常需要搜索其他內(nèi)容。幸運(yùn)的是,git grep命令使我們能夠在倉(cāng)庫(kù)中搜索特定的模式,并使開發(fā)更加容易。它的工作方式與標(biāo)準(zhǔn)Linux grep命令非常相似,具有一些特定于git的功能。
linuxidc@ubuntu:~/www.linuxidc.com$ git grep -iw ‘import’ master
此命令在我們的master分支中顯示所有包含“ import”的行。它以不區(qū)分大小寫的方式搜索。以下命令將在所有提交和分支中搜索給定的模式。
linuxidc@ubuntu:~/www.linuxidc.com$ git grep ‘import’ $(git rev-list –all)
如果您正在協(xié)作大型項(xiàng)目,這是最好的git命令之一。
30、管理工作樹
開發(fā)人員可以在git中使用多個(gè)工作樹。當(dāng)簽出多個(gè)項(xiàng)目分支時(shí),這很有用。檢查以下git命令,以了解如何在git中管理工作樹。
linuxidc@ubuntu:~/www.linuxidc.com$ git worktree list
linuxidc@ubuntu:~/www.linuxidc.com$ git worktree add new-branch
linuxidc@ubuntu:~/www.linuxidc.com$ git worktree remove new-branch
linuxidc@ubuntu:~/www.linuxidc.com$ git worktree prune
您可以使用第一個(gè)命令顯示當(dāng)前的工作樹。使用第二個(gè)命令添加一個(gè)新的“鏈接的工作樹”,并使用第三個(gè)命令刪除該樹。最后一條命令允許您修剪工作樹信息。
31、刪除未跟蹤的對(duì)象
有時(shí)您可能想刪除不再由git跟蹤的對(duì)象。Git提供了一個(gè)簡(jiǎn)單的命令來(lái)執(zhí)行此操作。git prune命令只會(huì)從對(duì)象數(shù)據(jù)庫(kù)中刪除未跟蹤的對(duì)象,而不會(huì)刪除引用本身。
linuxidc@ubuntu:~/www.linuxidc.com$ git prune –dry-run
linuxidc@ubuntu:~/www.linuxidc.com$ git prune –verbose –progress
第一條命令不會(huì)刪除任何內(nèi)容,只會(huì)顯示修剪后會(huì)刪除的對(duì)象。第二條命令在刪除期間提供詳細(xì)的輸出以及進(jìn)度報(bào)告。您可以使用prune命令和git gc命令一起優(yōu)化倉(cāng)庫(kù)。
32、打包未歸檔文件
在git中,包是單個(gè)壓縮對(duì)象的集合。Git對(duì)這些對(duì)象應(yīng)用增量壓縮并將其存儲(chǔ)在單個(gè)文件中。它們用于減少Linux文件系統(tǒng)或鏡像系統(tǒng)上的負(fù)載。git repack命令允許用戶創(chuàng)建新的包,這些包由不位于現(xiàn)有包內(nèi)的對(duì)象組成。
linuxidc@ubuntu:~/www.linuxidc.com$ git repack
您可以將此命令與gic gc和git prune一起使用,以優(yōu)化git倉(cāng)庫(kù)。
33、計(jì)算解包的對(duì)象數(shù)量
除非解壓縮的對(duì)象太多,否則不應(yīng)經(jīng)常重新打包對(duì)象。git count-objects命令是一種簡(jiǎn)單但有用的方法,用于查看解包對(duì)象的數(shù)量及其消耗的磁盤空間。
linuxidc@ubuntu:~/www.linuxidc.com$ git count-objects
使用上面的命令來(lái)確定是否應(yīng)該重新打包git。您可以添加–verbose標(biāo)志以獲取詳細(xì)信息,還可以添加–人類可讀標(biāo)志以常規(guī)方式顯示尺寸。
34、驗(yàn)證對(duì)象數(shù)據(jù)庫(kù)
Git最初是作為文件系統(tǒng)開發(fā)的。它具有一個(gè)稱為fsck的有用命令,其作用與Unix fsck非常相似。您可以使用此命令來(lái)驗(yàn)證連接性并執(zhí)行對(duì)象的完整性檢查。
linuxidc@ubuntu:~/www.linuxidc.com$ git fsck
運(yùn)行以上命令將顯示在對(duì)象數(shù)據(jù)庫(kù)中找到的所有損壞的對(duì)象。它是查找丟失或不良對(duì)象的最有用的git命令之一。
35、顯示每次提交的更改
git whatchanged命令是我們最喜歡的git子命令中的另一個(gè)。這是一種查看每個(gè)git commit引入到我們項(xiàng)目的更改的簡(jiǎn)單但有效的方法。
linuxidc@ubuntu:~/www.linuxidc.com$ git whatchanged
此git命令將使用提交日志和diff輸出顯示信息。總的來(lái)說(shuō),它的操作與git log命令非常相似。
36、匯總?cè)罩拘畔?/strong>
您還可以使用git shortlog命令查看歷史記錄。該命令的主要思想是將輸出包含在發(fā)行公告中。快速瀏覽以下命令以了解其工作原理。
linuxidc@ubuntu:~/www.linuxidc.com$ git shortlog
linuxidc@ubuntu:~/www.linuxidc.com$ git shortlog –email –summary
添加–email選項(xiàng)將顯示每個(gè)作者的電子郵件。該-summary選項(xiàng)會(huì)抑制通常輸出,只會(huì)顯示提交的數(shù)目。
37、管理配置選項(xiàng)
git有大量可用的配置選項(xiàng)。您可以使用git config命令查詢,設(shè)置或替換各種選項(xiàng)。可以對(duì)特定倉(cāng)庫(kù)和全局配置進(jìn)行更改。
linuxidc@ubuntu:~/www.linuxidc.com$ git config –list
上面的命令將在git中列出所有當(dāng)前設(shè)置的配置選項(xiàng)。您可以輕松添加或刪除新選項(xiàng)。遵循config子命令的幫助頁(yè)面以了解如何執(zhí)行這些任務(wù)。
linuxidc@ubuntu:~/www.linuxidc.com$ git config –help
38、Git幫助
git或任何其他Linux終端命令的幫助頁(yè)面提供了所有可用選項(xiàng)的摘要信息。當(dāng)您遇到git問題時(shí),它應(yīng)該是第一個(gè)訪問的地方??焖贋g覽以下命令以了解如何調(diào)用git幫助頁(yè)面。
linuxidc@ubuntu:~/www.linuxidc.com$ git help
linuxidc@ubuntu:~/www.linuxidc.com$ git –help
因此,您可以使用Unix風(fēng)格的–help選項(xiàng)或git中內(nèi)置的help子命令來(lái)查詢git幫助頁(yè)面。此外,git還提供了有關(guān)子命令的幫助頁(yè)面。
linuxidc@ubuntu:~/www.linuxidc.com$ git <command> –help
linuxidc@ubuntu:~/www.linuxidc.com$ git commit –help
39、手冊(cè)頁(yè)
手冊(cè)頁(yè)包含有關(guān)git版本控制系統(tǒng)及其所有子命令的深入信息。您可以按照以下語(yǔ)法查看它們。
linuxidc@ubuntu:~/www.linuxidc.com$ man git
linuxidc@ubuntu:~/www.linuxidc.com$ man git commit
因此,您也可以像使用幫助頁(yè)面一樣查看各個(gè)子命令的手冊(cè)。
40、顯示版本信息
您可以使用以下簡(jiǎn)單命令查看系統(tǒng)上已安裝的git版本。由于git在很大程度上隨著時(shí)間的推移而發(fā)展,因此各種git版本之間存在顯著差異。
linuxidc@ubuntu:~/www.linuxidc.com$ git –version
只需使用以上命令即可在您的計(jì)算機(jī)上獲取特定版本的git。
總結(jié)
Git憑借其實(shí)用的設(shè)計(jì)和多樣化的功能集,鞏固了其作為事實(shí)上的版本控制系統(tǒng)的地位。盡管有一些很好的選擇,例如Mercurial和CVS,但是大量實(shí)用的git命令使它比競(jìng)爭(zhēng)對(duì)手更通用。我們的編輯竭盡全力為您概述最實(shí)用的命令。希望您已從本指南中獲得了所需的基本見解。如果您對(duì)特定命令有疑問,請(qǐng)隨時(shí)向我們提問。
40個(gè)適用于Linux管理員和開發(fā)人員的git命令(上) http://www.sfodin.cn/Linux/2020-04/163079.htm