git
git是一個分佈式版本控制軟件,最初由林納斯·託瓦茲創作,於2005年以GPL發佈。最初目的是爲更好地管理Linux內核開發而設計。應注意的是,這與GNU Interactive Tools(一個類似Norton Commander界面的文件管理器)有所不同。git最初的開發動力來自於BitKeeper和Monotone。git最初只是作爲一個可以被其他前端(比如Cogito或Stgit)包裝的後端而開發的,但後來git內核已經成熟到可以獨立地用作版本控制。很多著名的軟件都使用git進行版本控制,其中包括Linux內核、X.Org服務器和OLPC內核等項目的開發流程。
git的基本使用
主要是指一下基本操作:
- 安裝
- ssh登入配置
- 命令使用
安裝
根據自己的系統進行選擇安裝方式,可以使用命令行安裝,也可以使用安裝包安裝,git官方安裝包地址
ssh登入配置
安裝完成之後,需要考慮和遠程的倉庫建立連接,就需要賬號和密碼,無論是github
、gitlab
等,都需要一個賬戶名,可以註冊完成,然後設置:
git config --global user.name "yourName"
git config --global user.email "yourEmail"
爲了避免每次push代碼都需要密碼之類的,我們通過ssh來配置;執行:
ssh-keygen
一路enter即可,在~/.ssh/
下會生成兩個文件,複製其中的公鑰:
pbcopy < ~/.ssh/id_rsa.pub
進入遠程倉庫的個人中心,https://github.com/settings/profile
;會找到關於SSH and GPG keys
,有一個New SSH key
的按鈕,點擊後,可以黏貼上剛複製的公鑰,然後Add SSH key
即可;
可以pull和push代碼測試是否成功。
git命令使用
- 對於win10系統,推薦升級後使用好的官方新出的終端,
Windows Terminal
,需要當前最新的win10版本,用起來挺好的,可以再Microsoft的官方商城下載體驗。 - 對於mac或者linux用戶,推薦配置 oh-my-zsh, 這個
oh-my-zsh
默認安裝上了git plugin
在~/.zshrc
配置文件中,可以使用很多的簡潔命令,git簡寫命令集合
多用戶配置
git-config的官網巨長文檔,開發人員經常遇到這樣的問題,我們的公司倉庫和個人倉庫的用戶名和郵箱配置是有區別的,爲了能夠很好地區分工程上傳到不同的遠程倉庫,我們需要分別處理,保證在不同的工程使用不同的賬戶
- 按工程配置多用戶
- 按目錄配置多用戶
按工程配置多用戶
目前git的配置變量可以放在三個地方:
- /etc/gitconfig 系統配置,對所有用戶都生效。
-
~/.gitconfig 用戶配置,僅對當前用戶生效。
git config --global user.name "yourName" git config --global user.email "yourEmail"
-
projectRootPath/.git/config 項目根目錄配置,僅對當前項目生效。對應:進入工程根目錄執行
git config user.name "yourName" git config user.email "yourEmail"
三層是從3-2-1的優先級處理的,這樣我們可以對不同工程完成不同的配置,這個在工程數量多的時候簡直不忍直視,所以需要尋找更好的方法。
按目錄配置多用戶
在2017年,git新發布的版本2.13.0包含了一個新的功能includeIf
配置,可以把匹配的路徑使用對應的配置用戶名和郵箱;
在~/
目錄下面存在三個配置文件,
- .gitconfig // 全局通用配置文件
- .gitconfig-self // 個人工程配置文件
- .gitconfig-work // 公司工程配置文件
全局通用配置文件~/.gitconfig
裏面的內容是:主要是通過includeIf
配置匹配不用的目錄映射到不同配置文件上,
[includeIf "gitdir:~/self-workspace/"]
path = .gitconfig-self
[includeIf "gitdir:~/workspace/"]
path = .gitconfig-work
個人工程配置文件~/.gitconfig-self
:
[user]
name = yourname-self
email = [email protected]
公司工程配置文件~/.gitconfig-work
:
[user]
name = yourname-work
email = [email protected]
遇到的問題:
- 文件
~/.gitconfig
裏面的includeIf
後面的path最後需要/
結尾 - 文件
~/.gitconfig
裏面原有的user部分需要刪除 - 個人工程目錄和公司工程目錄需要要求是非包含關係,就是這兩個工程目錄配置路徑不可以是父子關係。