聊下 git 使用前的一些注意事項

鏈接方式https、ssh

在使用git的時候,無論你的服務器是開源平臺github仍是私服gitlab,你都須要clone倉庫到本地,這個clone的時候就須要你選擇鏈接方式。這個鏈接方式決定了你與服務器交互的時候以一個什麼協議進行。若是你沒搞清楚這兩種方式,可能你在使用的時候會很困惑,別人在push代碼的時候沒有提示輸入帳號密碼,而你卻有,至少我當初有過這個問題。git

可選擇的協議有https、ssh兩種,這從git repository倉庫的地址就能分辨出來。github

1

這是我6年前的開源項目,套打組件。拿這個作例子,紅色範圍內的地址就是ssh的鏈接地址。你能夠經過」Use HTTPS」切換使用https鏈接地址。算法

2

3

這是兩種方式鏈接git服務器。在clone的時候地址就決定了你的交互協議。這兩種方式與git服務器交互的區別體如今你每次push代碼的時候。https協議在你每次push的時候都要求你輸入git帳號密碼,這種方式通常多用於那些你不多push代碼的場景。ssh是用於那些工程開發,你須要頻繁push代碼的場景。服務器

https的帳號就是你的git服務器給你分配的,每次push的時候會有一個文本框提示你輸入。ssh

ssh的使用須要你的倉庫管理員爲你設置一個公鑰,這樣你每次push代碼的時候git服務器才知道你是誰。這是採用RSA(公鑰加密算法)也稱非對稱加密算法,RSA產生一對密鑰(公鑰和私鑰),你只須要將你的公鑰提交到git服務器上便可。當你每次push代碼的時候就會使用這對密鑰來加解密且驗證身份。gitlab

你可能會問,爲何我不是把私鑰設置到服務器中而是公鑰,若是你真的這麼想了,也不奇怪。可是你再進一步想,RSA的算法執行順序就知道了。加密和解密的邏輯是不一樣的,你提供反了密鑰是執行不了的。加密

git客戶端生成ssh密鑰對網上有不少文章,這裏就不重複了,主要使用ssh-keygen命令。生成好了以後在你的.ssh目錄下會有一對密鑰文件。url

4

5

複製.pub文本文件中的公鑰,到你的github服務器上設置,在settings/profile下。spa

6

7

添加一個新的sshkey。每個sshkey的使用都有時間記錄。若是沒有被使用過,ssh的綠色鑰匙是灰色的。這樣你就完成了git鏈接遠程倉庫,且能夠隨時push代碼了。開始你的git之旅吧。blog

git user.name、user.email、commit log 中的帳號泄露問題

在使用git進行一系列開發以前,你須要設置下當前git客戶端所表明用戶是誰。這樣你在commit代碼的時候,commitlog中會顯示Author是誰,郵箱是誰。

Author: plen-wang <wangqingpei557@163.com>

那麼怎麼設置用戶名、郵箱尼。你可能使用git config global user.name、git config global user.email來設置全局的帳號和郵箱。

這麼作沒錯,可是這麼作有一個問題,就是當你切換不一樣的git repository的時候你的commitlog就有問題了。由於你設置的是全局用戶名和郵箱,想一想看若是你在公司使用的是gitlab,而後的你的用戶名和郵箱是公司內部的,忽然你切換到外部的github的倉庫上,進行代碼開發和commit,想一想看你的commitlog裏會出現什麼狀況。

在git客戶端裏有兩種用戶名和郵箱,一個是全局,也是默認的。一個是倉庫級別的。因此當你使用global做爲你平時的默認設置時不要緊。可是一旦clone一個新的倉庫的時候記得設置當前倉庫級別的用戶名、郵箱。

查看全局用戶名、郵箱,git config --global user.name,git config --global user.email
查看當前倉庫的用戶名、郵箱,git config user.name,git config user.email

設置全局用戶名、郵箱,git config --global user.name 「plen-wang」,git config –global user.email 「plen-wang@163.com」

設置當前倉庫的用戶名、郵箱,git config user.name 「plen-wang-xxx」,git config user.email 「plen-wang-xxx@163.com」

你能夠經過git config --list 來查看全部的配置

8

這裏面會出現兩組user.name、user.email 的設置。最上面的北色框裏的都是全局配置,下面的白色框裏的是當前倉庫的配置。你能夠經過查看remote.origin.url來識別。

相關文章
相關標籤/搜索