Git 之一 起源、安装、配置
寫在前面
??Git 的官網(wǎng)上有很詳細(xì)的使用教程(當(dāng)然有翻譯版本),具體地址是 https://git-scm.com/book/zh/v2。唯一不足就是,很多講解并沒有實(shí)機(jī)演示。但是,毫無疑問,官網(wǎng)資料是最全面的!如果有任何疑問,可以去官網(wǎng)看看!
什么是 Git
??Git 是一個(gè)開源的分布式版本控制系統(tǒng),可以有效、高速地處理從很小到非常大的項(xiàng)目版本管理。 Git 是 Linus Torvalds 為了幫助管理 Linux 內(nèi)核開發(fā)而開發(fā)的一個(gè)開放源碼的版本控制軟件。
??Linus 個(gè)人對于集中式版本控制系統(tǒng)并不感興趣,在 Git 出來之前,集中式版本控制系統(tǒng)要比分布式版本控制系統(tǒng)更加流行(彼時(shí),分布式版本控制系統(tǒng)很少,其中 BitKeeper 就是比較出色的一個(gè))。而 Linus 最終選擇了分布式版本控制系統(tǒng) BitKeeper 來管理 Linux 源碼。
誕生
??在 Linux 開源的初期,Linux 開源項(xiàng)目的代碼是 linus 本人通過 linux 命令 diff 和 patch 兩條命令手動(dòng)完成。隨著 Linux 代碼越來越壯大,靠 Linus 一個(gè)人來手動(dòng)合并已經(jīng)不現(xiàn)實(shí)。2002 年,Linus 選擇了一個(gè)商業(yè)版本控制系統(tǒng) BitKeeper 作為 Linux 內(nèi)核的代碼管理工具(BitKeeper 的開發(fā)商 BitMover 授權(quán) linux 社區(qū)免費(fèi)使用)。但是,免費(fèi)使用是有很多的限制的,因此 linux 社區(qū)的大佬開始破解 BitKeeper。其中,samba 的作者 andrew 破解成功了。但是被 BitMover 公司發(fā)現(xiàn),收回免費(fèi)使用權(quán)。
??迫不得已,Linus 選擇了自己開發(fā)一個(gè)分布式版本控制工具以替代 BitKeeper。linus 閉關(guān)一個(gè)月,寫出了 Git。在一個(gè)月后,Git 成功接管了 Linux 社區(qū)的版本控制工作,并且開始開源。維基百科中,有如下歷史記錄:
- 2005 年 4 月 3 日,開始開發(fā) Git。
- 2005 年 4 月 6 日,項(xiàng)目發(fā)布。
- 2005 年 4 月 7 日,Git 就可以作為自身的版本控制工具了。
- 2005 年 4 月 18 日,發(fā)生第一個(gè)多分支合并。
- 2005 年 4 月 29 日,Git 的性能就已經(jīng)達(dá)到了 Linus 的預(yù)期。
- 2005 年 6 月 16 日,Linux 核心 2.6.12 發(fā)布,那時(shí) Git 已經(jīng)在維護(hù) Linux 核心的源代碼了。
??在 2005 年 7 月 26 日,Linus 功成身退,將 Git 的維護(hù)交給另外一個(gè) Git 的主要貢獻(xiàn)者 Junio C Hamano。
在 Linus Torvalds 開發(fā)出 Git 分布式版本控制系統(tǒng) 11 年后的 2016 年,BitKeeper 宣布在 Apache 2.0 許可證下開源。
Git 安裝
??Git 本身支持 Mac OS X、Windows、Linux/Unix 這些主流的平臺(tái)。
其中,Mac OS X 和 Windows 都是直接在官網(wǎng)下載安裝包。對于 Windows 平臺(tái),還有個(gè)網(wǎng)站:https://gitforwindows.org/。注意,下載需要翻墻! 而 Linux/Unix 則主要是通過各自的包管理工具來安裝:
下面主要以 Windows 平臺(tái)為例來簡單介紹一下!為了節(jié)約文章篇幅,將個(gè)截圖進(jìn)行了拼接。其實(shí),我們不需要關(guān)心安裝中的各種配置,直接以默認(rèn)的選項(xiàng)安裝就可以! 對于大多數(shù)的配置,我們在安裝完成后也是可以再次更改的!安裝過程中,主要是配置一些配套工具。因?yàn)?Git 本身是個(gè)命令行工具!
安裝中的這些選項(xiàng)最終會(huì)生成一個(gè)配置文件。具體為 Git 安裝目錄 \mingw32\etc\gitconfig。
一二三
需要注意的是:
- 第二步:配置 Git 的安裝選項(xiàng)。例如 桌面圖標(biāo)、文件關(guān)聯(lián)、檢測升級(jí)等等
- 第三步:選擇默認(rèn)的編輯器。默認(rèn)的是 Vim。看圖中的說明,其推薦更換為比較現(xiàn)代的編輯器。Git 支持如下編輯器:
對應(yīng)的配置文件是 Git 安裝目錄 \mingw32\etc\gitconfig 中
四五六
- 第四步:調(diào)整系統(tǒng)環(huán)境變量
- 第五步:配置 Git 中使用的 HTTPS 通信使用的加密庫
- 第六步:選擇換行符
七八九
- 第七步:Git 是個(gè)命令行工具(使用我們常見的那個(gè)黑框)。Git 可以選擇兩種黑框:Windows 系統(tǒng)的 CMD 和 MSYS2 中的 MinTTY
最后,點(diǎn)擊 Install 就開始安裝了!
完成
安裝完成后,我們就可以打開 Git 了。Git 提供了一個(gè) GUI 界面 和 一個(gè) Bash 界面,如下圖:
其中,GUI 界面僅能實(shí)現(xiàn)很少的一部分功能。通常我們可以在提交代碼時(shí),使用比較簡單;Bash 功能更加強(qiáng)大,可執(zhí)行全部的命令操作!
配置
??Git 的配置是通過 Git 提供的命令來實(shí)現(xiàn)的。Git 命令的使用可以參見另一篇博文。Git 的配置主要就是 Git 命令 git config 的使用。Git 提供了一個(gè)叫做 git config 的命令,專門用來配置或讀取相應(yīng)的工作環(huán)境變量。這些環(huán)境變量,決定了 Git 在各個(gè)環(huán)節(jié)的具體工作方式和行為。Git 的配置按照作用范圍優(yōu)先級(jí)從高到低如下:
優(yōu)先級(jí)最高,僅對所在的倉庫有效,對應(yīng)的參數(shù)是 git config --local。對應(yīng)的配置文件是 當(dāng)前工作目錄中/.git/config 文件
優(yōu)先級(jí)次之,對所有倉庫有效。如果沒有配置倉庫級(jí)別,則會(huì)啟用本配置。對應(yīng)的參數(shù)是 git config --global。對應(yīng)的配置文件是 ~/.gitconfig 文件(Windows下就是系統(tǒng)盤符:/用戶/你的用戶名/.gitconfig)
優(yōu)先級(jí)最低,對所有倉庫有效。如果沒有以上兩種級(jí)別,則會(huì)啟用本配置。對應(yīng)的參數(shù)是 git config --system。對應(yīng)的配置文件在 Linux 系統(tǒng)下的 /etc/gitconfig,在 Windows 系統(tǒng)下的Git 安裝目錄\mingw64\etc\gitconfig。我們在安裝時(shí)所選擇的配置就在該配置文件中。
高級(jí)別的配置都會(huì)覆蓋低的相同配置。所以 .git/config 里的配置會(huì)覆蓋 /etc/gitconfig 中的同名變量。使用 git config --list 查看相關(guān)配置。
注意:有時(shí),通過上面的命令,可能出現(xiàn)重復(fù)變量,它們來自不同的配置文件,不過,最終 git 會(huì)采用上面說明的最近目錄中的參數(shù)。
在 Windows 下,還有個(gè)配置文件目錄:系統(tǒng)盤符:\ProgramData\Git\config
更詳細(xì)的使用說明,見 Git 安裝目錄下的說明文檔
??下面我們重點(diǎn)介紹常用的一些配置。Git 本身支持的配置項(xiàng)有很多,官網(wǎng) https://git-scm.com/docs/git-config.html 有介紹。在以下的舉例中,默認(rèn)都是使用 --global 參數(shù),其對應(yīng)的配置文件為 系統(tǒng)盤/用戶/你的用戶名/.gitconfig。
身份
??首先,Git 是分布式版本控制系統(tǒng),必須要能區(qū)別每個(gè)成員,所以,每個(gè)機(jī)器都必須自報(bào)家門:你的名字和 Email 地址。要使用 Git 這個(gè)配置是必須的,否則在使用Git 時(shí)會(huì)提示用戶進(jìn)行設(shè)置。
$ git config --global user.name "ZCShou" $ git config --global user.email ZCShou@live.com如果用了 --global 選項(xiàng),那么更改的配置文件就是位于你用戶主目錄下(Windows下就是系統(tǒng)盤符:/用戶/你的用戶名/.gitconfig),以后你所有的項(xiàng)目都會(huì)默認(rèn)使用這里配置的用戶信息。 如果要在某個(gè)特定的項(xiàng)目中使用其他名字或者電郵,只要去掉 --global 選項(xiàng)重新配置即可,新的設(shè)定保存在當(dāng)前項(xiàng)目的.git/config 文件里。其中,后者會(huì)覆蓋前者而起作用!
遠(yuǎn)程訪問
??在 Git 架構(gòu)的版本控制系統(tǒng)中,通常也會(huì)有個(gè)服務(wù)器倉庫用來同步各協(xié)作者的操作。例如,我們比較了解的 Github 就是其中之一。要訪問遠(yuǎn)程服務(wù)器上的倉庫,我們就需要一定的協(xié)議。Git 可以使用四種主要的協(xié)議來傳輸資料:本地協(xié)議(Local),HTTP/HTTPS 協(xié)議,SSH(Secure Shell)協(xié)議及 Git 協(xié)議。例如,Github 就提供了 SSH 和 HTTPS 這兩種方式,如下圖:
- 本地協(xié)議(Local): 無需要配置
- Git 協(xié)議: 無需配置
- HTTP/HTTPS: 每次推送,Git 服務(wù)器會(huì)詢問用戶名與密碼。 默認(rèn)情況下它會(huì)在終端中提示服務(wù)器是否允許你進(jìn)行推送。如果不想在每一次推送時(shí)都輸入用戶名與密碼,你可以設(shè)置一個(gè) “credential cache”。 最簡單的方式就是將其保存在內(nèi)存中幾分鐘,可以簡單地運(yùn)行 git config --global credential.helper cache 來設(shè)置它。在 Windows 系統(tǒng)中,在輸入過用戶名密碼之后,會(huì)被系統(tǒng)給保存下來!我們可以如下圖所示的位置進(jìn)行修改:
- SSH: 通過 SSH 協(xié)議克隆版本庫,你可以指定一個(gè) ssh:// 的 URL:git clone ssh://user@server/project.git 或者使用一個(gè)簡短的 scp 式的寫法:git clone user@server:project.git。
??現(xiàn)有的很多平臺(tái)(例如 Github)都是以 SSH 秘鑰的方式進(jìn)行通信的!因此如果我們要以 SSH 的方式訪問遠(yuǎn)程倉庫,則根據(jù) SSH 協(xié)議,必須要生成我們 Key。Git 客戶端默認(rèn)是帶有 OpenSSH 的,配置方式是使用命令ssh-keygen -t rsa -C "youremail@example.com",如下:
如上圖,如果我們不填寫保存 Key 的文件名,則默認(rèn)會(huì)在系統(tǒng)用戶的主目錄下生成 .ssh 的文件夾下保存生成的 Key,如下圖
如果填寫了保存 Key 的文件名,則會(huì)指定的位置保存我們的 Key(如果沒有填寫路徑,則會(huì)在 Bash 當(dāng)前工作目錄下)。
關(guān)于 Git 使用的協(xié)議 及遠(yuǎn)程倉庫的使用,具體見博文Git 之四 通信協(xié)議(HTTPS、SSH、Git)、使用遠(yuǎn)程倉庫(GitHub、GitLab、Gitee等)!
文本編輯器
??Git 默認(rèn)使用的文本編輯器, 一般 Vim。這個(gè)編輯器做什么用呢?在我們提交(commit )代碼時(shí),需要添加說明,此時(shí)就需要一個(gè)編輯器;再比如,我們在 Git Bash 命令行中編輯 Git 的配置文件時(shí),也需要一個(gè)編輯器!默認(rèn)情況下,在需要用戶輸入時(shí),Git 會(huì)啟用 Vim。如果我們更改后,則會(huì)在有輸入打開我們設(shè)置的編輯器。我使用的是 VSCode(insider 版本)
$ git config --global core.editor Code-Insiders.exe使用以上命令注意 --global 參數(shù),其位于 系統(tǒng)盤的 User 目錄下。下圖是 Git 官網(wǎng)給出的 編輯器命令列表:
一個(gè)使用示例,具體如下:
注意:
差異比較工具
??Git 可以理解 kdiff3,tkdiff,meld,xxdiff,emerge,vimdiff,gvimdiff,ecmerge,和 opendiff 等合并工具的輸出信息。
$ git config --global merge.tool vimdiff內(nèi)容推送
??不帶任何參數(shù)的git push,默認(rèn)只推送當(dāng)前分支,這叫做 simple 方式。此外,還有一種 matching 方式,會(huì)推送所有有對應(yīng)的遠(yuǎn)程分支的本地分支。Git 2.0 版本之前,默認(rèn)采用 matching 方法,現(xiàn)在改為默認(rèn)采用 simple 方式。如果要修改這個(gè)設(shè)置,可以采用 git config 命令。
$ git config --global push.default matching # 或者 $ git config --global push.default simple其他
Git 官網(wǎng)有詳細(xì)的介紹所有的配置項(xiàng) https://git-scm.com/book/zh/v2/%E8%87%AA%E5%AE%9A%E4%B9%89-Git-%E9%85%8D%E7%BD%AE-Git 。
配置完成后,就可以開啟 Git 的使用之旅了。
參考
總結(jié)
以上是生活随笔為你收集整理的Git 之一 起源、安装、配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 版本控制系统 之一 概念、分类、常见版本
- 下一篇: Git 之四 分支管理