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