在開始使用Git時,重要的是要對其進行配置,這樣它在特定的環境里才能正常工作。我們還能夠以喜歡的方式管理內容以及與Git交互
一、在Git中執行命令
Git命令行的普遍應用形式。通常如下:
git <git-options> <command> <command-options> <operands>
下表描述了這一形式的不同部分
元素 | 描述 | 示例 | 備注 |
git | 運行git的命令 | git | |
<git-options> | Git本身的全局選項,這些選項也可以指定要執行的函數 | git --worktree git --version |
這些選項中的一些可能旨在用於獨立操作(git --version),而其它一些會修改其他命令所使用過的值(git --worktree) |
<command> | 要執行的Git命令 | git --push | |
<command-options> | 對於所指定命令的選項 | git commit -m "comment" | 如果未指定可能會使用默認選項,選項也可能具有可被選擇以便進一步限定該選項的值 |
<operands> | 命令要操作的操作數 | git add *.c | 特定於要執行的命令;示例包括工作目錄中的文件,倉庫中的分支或SHA1,或者特定的設置或值 |
1、操作數類型
Git可以采用不同類型的操作數,他們就是要進行操作的對象的規范。在沒有指定操作數時,命令會針對它在倉庫、暫存區域或工作目錄樹范圍中找到的所有合格項來進行操作。
2、高層命令和底層命令的對比
高層命令是為了面向用戶,它們更常被使用以及更加便利,通常會提供較高級別的功能。底層命令會在較低級別發揮作用,也並不打算讓普通用戶使用。可以使用高層命令或底層命令來完成Git中的某些職能。不過,通常需要幾個具體的底層命令才能完成一個高層命令所執 行的任務
下表列出了Git中可用的高層命令
命令 | 目的 |
add | 將文件內容添加到索引 |
bisect | 通過二進制搜索來查找涉及缺陷的變更 |
branch | 列示、創建或刪除分支 |
checkout | 切換分支或恢復工作樹文件 |
cherry | 找出有待應用到上游的提交 |
cherry-pick | 應用已有提交所涉及的一些變更 |
clone | 將倉庫克隆到新目錄 |
commit | 將變更記錄到倉庫 |
config | 獲取以及設置倉庫或全局選項 |
diff | 顯示提交之間、提交與工作樹之間等的變更 |
fetch | 下載來自另一個倉庫的對象和引用 |
grep | 打印匹配一個模式的行 |
help | 顯示幫助信息 |
log | 顯示提交日志 |
merge | 將兩個或多個開發歷史合並到一起 |
mv | 移動或重命名一個文件,目錄或符號連接 |
pull | 從另一個倉庫或本地分支進行抓取或集成 |
push | 更新遠程引用以及相關的對象 |
rebase | 將本地提交轉發到更新的上游頭信息 |
reset | 將當前head重新設置為指定狀態 |
revert | 還原一些已有的提交 |
rm | 從工作樹和索引中移除文件 |
show | 顯示各種類型的對象 |
status | 顯示工作樹狀態 |
submodule | 初始化、更新或檢查子模塊 |
subtree | 合並子樹並且將倉庫划分為子樹 |
tag | 創建、列示、刪除或驗證標記對象 |
worktree | 管理多個工作樹 |
關於底層命令的列出此處略去
3、指定參數
提供給Git或者Git命令的參數可以被縮寫成單個字母或者完整拼寫成單詞。這里要重要提的一點是,如果參數被完整拼寫,就必須在前面使用兩個連字符,比如--global。如果參數是縮寫的,那么只需要一個連字符,比如-a。
4、自動完成
當開始輸入一個命令或者為一個命令輸入參數時,Git提供了一項有幫助的自動完成特性,它可以完成兩件事情
- 提供可以完成當前輸入文本的用於命令或參數的有效值--如果存在多個有效選項的話
- 自動完成當前輸入的命令或參數--如果只有一個有效選項的話
下面是兩個示例。第一個是命令的示例。如果輸入git c,然后按下Tab鍵,不會發生任何事情,因為存在多個以c開頭的命令。
如果再次按下Tab鍵,Git會幫助顯示所有以c開頭的命令。在這種情況下,它還會向上滾動該列表並且讓你處於可以繼續輸入所選命令的提示符處
下面是另一個例子,其中要使用更多的字母來縮小可用的命令范圍
提示:
在嘗試為一個選項使用自動完成時,要確保已經用雙連字符(--)語法作為該選項的開頭,而不是僅僅使用單個連字符
二、配置Git
為了設置Git中的配置值,要使用config命令,下面是其語法:
git config [<file-option>] [type] [--show-origin] [-z|--null] name [value [value-regex]]
git config [<file-option>] [type] --add name value
git config [<file-option>] [type] --replace-all name value [value-regex]
git config [<file-option>] [type] [--show-origin] [-z|--null] --get name [value-regex]
git config [<file-option>] [type] [--show-origin] [-z|--null] --get-all name [value-regex]
git config [<file-option>] [type] [--show-origin] [-z|--null] [--name-only] --get-regexp name_regex [value-regex]
git config [<file-option>] [type] [-z|--null] --get-urlmatch name URL
git config [<file-option>] --unset name [value-regex]
git config [<file-option>] --unset-all name [value-regex]
git config [<file-option>] --rename-section old_name new_name
git config [<file-option>] --remove-section name
git config [<file-option>] [--show-origin] [-z|--null] [--name-only] -l | --list
git config [<file-option>] --get-color name [default]
git config [<file-option>] --get-colorbool name [stdout-is-try]
git config [<file-option>] -e | --edit
需要注意的是:Git配置被設置在文本文件中,可以通過編輯相關的文本文件來修改 這些設置,但強烈不建議這樣做,因為很容易出現錯誤,並且有很容易修改到其他設置
1、告知git你的身份
需要在Git中配置的一件首要事情就是你的身份,這要根據有用戶名和電子郵件來確定。Git期望你設置這兩個值,這是因為Git是一個源管理系統。由於其目的是隨時間推移追蹤用戶所做的變更,因此它希望知道誰在進行哪些變更,這樣一來它才能記錄他們
如果不指定這些值,那么Git將用當前登錄的用戶ID和機器名來填充它們。有可能這並非我們希望系統最終使用的身份。可以通過git config --global user.name <name>和git config --global user.email<email address>
提示:
在Git中設置電子郵件地址時,並不會對其進行驗證。不過Git中的一些高級功能會使用這個電子郵件地址,該功能允許完成創建和共享變更的修訂和壓縮版本這樣的任務。對於該功能而言,使用一個正確的電子郵件地址是很重要的。
2、配置范圍
global選項是告知Git應該在多大范圍內使用這一配置的一種方式--它應該應用到哪些倉庫。Git模型旨在應用於多個較小的倉庫,而不是較少的整體單一式倉庫。由於用戶通常會使用多個倉庫,因此必須在每個倉庫中配置相同的設置會很不方便。因此,Git提供了簡化選擇配置值范圍的選項。有三種可用的級別配置:系統、全局和本地
①系統:系統級別的配置意味着一個配置值會被應用到指定系統上的所有倉庫,除非在一個較低的級別上對其重寫。為了確保配置值應用在系統級別,要為config命令指定--system選項,比如git config --system core.autocrlf true
②全局:全局級別的配置表明配置值適用於特定用戶的所有倉庫,除非在本地級別對其進行了重寫。否則這就是用戶要使用的最常見級別,因為它避免了必須為每一個倉庫設置值的工作。這些設置被存儲在每個用戶的主目錄中的一個名為.gitconfig的文件中
③本地:在本地級別設置一個配置值意味着該設置只應用與一個倉庫的上下文中,這對於指定一個特定倉庫的唯一設置的場景來說會很有用。如果需要臨時重寫一個較高級別的設置,那么它也會很有用。本地倉庫的配置會被存儲在本地Git倉庫的.git/config中
④設置的層次結構
Git會使用一種特定的搜索順序來找出配置好的設置。首先會在本地倉庫配置中查找一個設置,然后查找全局配置,最后查找系統配置。如果以該搜索順序找到一個指定值,那么這個值就被使用了。
⑤查看配置值
要查看一個特定配置設置具有什么值,可以使用git config <setting> ,比如git config user.name
⑥列出配置設置
有時可能需要移除特定級別上的一個用戶設置。Git為此提供了unset選項
$ git config --unset <other options> <value to remove>
這里的其他選項指的是其中一個范圍選項。
⑦列出配置設置
與瀏覽配置值有關的另一個選項是--list,為git config提供這個list選項會生成一份所有配置設置的列表。默認情況下,這份列表包含無限定的本地、全局和系統設置。
3、設置行結束符
4、別名
5、Windows文件系統緩存
三、初始化倉庫
1、git init
2、git clone
四、高級主題
1、git init揭秘
2、進一步深入了解Git倉庫
3、將config命令映射到配置文件
4、創建參數化別名