1、簡介
Git是一個開源的分布式版本控制系統,能用於快速高效地處理任何或小或大的項目,它是Linus Torvalds為了幫助管理Linux內核開發而開發的一個源碼開放的版本控制軟件。
2、Linux平台安裝git
Git的工作需要調用curl、zlib、openssl等庫,因此在安裝git之前需要安裝這些依賴庫,在Linux系統上使用apt-get或yum命令進行安裝。
(1)命令行安裝
首先安裝庫依賴:
$ sudo apt-get install libcurl4-gnutls-dev libexpat1-dev gettext \ libz-dev libssl-dev
然后繼續安裝git:
$ sudo apt-get install git
安裝完成后查看git的版本號:
$ git --version
如下正常顯示出版本號,則git安裝完成:
(2)源碼安裝
我們也可以通過Git的源碼進行安裝,先去Git官網下載最新版本源碼,鏈接如下:
https://git-scm.com/download
解壓並安裝下載的源碼包:
$ mv git-2.23.0.tar.gz ~/github/ $ cd ~/github/ $ tar -zxvf git-2.23.0.tar.gz $ cd git-2.23.0/ $ make prefix=/usr/local all $ sudo make prefix=/usr/local install
測試是否已經安裝完成:
$ git --version
運行結果如下所示則安裝完成:
3、初次使用配置git
一般在新的系統上,都需要先配置下自己的Git的工作環境,Git提供了一個叫做git config的工具,專門用來配置和讀取相應的工作環境變量,這些環境變量決定了Git在各個環節的具體工作方式和行為,這些變量可以存放在以下三個不同的地方:
a)/etc/gitconfig文件:系統中對所有用戶都普遍適用的配置,若使用git config時用--system選項,讀寫的就是這個文件。
b)~/.gitconfig文件:用戶目錄下的配置文件只適用於當前用戶,若使用git config時用--global選項,讀寫的就是這個文件。
c)當前項目的git目錄中的配置文件(工作目錄中的.git/config文件):這里的配置僅僅對當前項目有效。每一個級別的配置都會覆蓋上層的相同配置,所以.git/config里的配置會覆蓋/etc/gitconfig中的同名變量。
(1)用戶信息配置
用戶信息是第一個需要配置的,包括個人的用戶名和電子郵件地址,每次git提交時都會引用這兩條信息:
$ git config --global user.name “xxx”
$ git config --global user.email “xxx@example.com”
使用--global選項,那么更改的配置文件就是位於當前用戶的主目錄下(~/.gitconfig文件),以后所有的項目都會默認使用這里配置的用戶信息,如果想要在某個特定的項目使用其他名字和郵箱,將--global選項去掉,然后重新配置即可,新的配置將保存到當前項目的.git/config文件中。
(2)文本編輯器
Git需要用戶輸入一些額外信息的時候,會自動調用一個外部文本編輯器,默認會使用操作系統指定的默認編輯器,這個編輯器也可以自行設置:
$ git config --global core.editor vim
(3)差異分析工具
設置解決合並沖突時使用哪種差異分析工具,比如改用vimdiff的話:
$ git config --global merge.tool vimdiff
(4)查看配置信息
配置完成后,如果想查看已有的配置信息,可以使用下面命令:
$ git config --list
有時候可能會看到重復的變量名,這說明它們來自不同的配置文件(例如/etc/gitconfig和~/.gitconfig),不過Git最終采用的是最后一個。
另外,還可以直接查看某個環境變量的設定,將特別的名字加上即可:
$ git config user.name
4、git-ssh的配置和使用
(1)為什么需要配置公鑰和私鑰
Git使用https協議時,每次pull或push都需要輸入密碼,提交代碼時相當麻煩,使用git協議,然后使用SSH密鑰,可以實現免密登錄。SSH是加密傳輸的,Git可使用RSA加密傳輸算法,RSA要解決的一個核心問題是,如何使用一對特定的數字,使其中的一個數字可以用來加密,而另外一個數字可以用來解密,這兩個數字就是使用Git時遇到的public key(公鑰)和private key(私鑰),例如:從github發過來的是用公鑰加密過的數據,可以使用本地的私鑰來進行還原。
(2)檢查SSH密鑰是否存在
打開終端,輸入下面的命令檢查是否存在現有的SSH密鑰:
$ ls -al ~/.ssh
檢查目錄列表是否已經有SSH公鑰,默認情況下,檢查是否有以下文件:
id_dsa.pub
id_ecdsa.pub
id_ed25519.pub
id_rsa.pub
如果接收到錯誤提醒”~/.ssh不存在”,可以使用命令行生成SSH密鑰。
(3)生成SSH密鑰
在終端下運行下面命令:
$ ssh-keygen -t rsa -b 4096 -C "xxx@example.com"
運行上面命令時,會提醒用戶輸入一個名字來保存內容,不用管,直接回車,然后會提醒用戶輸入SSH密鑰管理密碼,輸入相應的密碼或者直接回車都可以,最后,公鑰和私鑰會生成並保存到~/.ssh目錄下,可以使用ls命令進行查看。
(4)添加SSH密鑰到ssh-agent
ssh-agent是一種控制用來保存公鑰身份驗證所使用的私鑰的程序,其實就是一個密鑰管理器,運行ssh-agent以后,使用ssh-add將私鑰交給ssh-agent保管,其它程序需要身份驗證的時候可以將驗證申請交給ssh-agent來完成整個認證過程:
啟動ssh-agent:
$ eval "$(ssh-agent -s)"
添加生成的SSH key到ssh-agent:
$ ssh-add ~/.ssh/id_rsa
(5)添加SSH公鑰到github賬號下
在終端下運行命令:
$ cat ~/.ssh/id_rsa.pub
然后將輸出的內容進行復制,復制完成后,按下面步驟添加公鑰到github下:
在任意頁面的右上角,點擊個人資料照片,然后點擊Settings按鈕如下:
在用戶設置的側邊欄中,點擊SSH and GPG keys按鈕,如下:
然后點擊New SSH key去添加SSH密鑰,如下:
按下圖進行標簽輸入,SSH公鑰復制粘貼,然后添加:
最后提示需要輸入賬號的密碼,直接輸入即可完成SSH公鑰添加:
(6)測試SSH連接
在終端下,輸入下面命令:
$ ssh -T git@github.com
如果能看到自己的用戶名,並提示已經成功授權,則SSH連接已經成功了,如下運行結果:
5、使用SSH URL克隆項目
登錄到github賬號查看倉庫,可以使用SSH URL將項目clone到計算機上,如下:
在終端上運行命令:
$ git clone git@github.com:Cqlismy/myGitTest.git
要使用SSH URL,必須在計算機上生成SSH密鑰對,並將公鑰添加到自己github賬號,如上所介紹的如何生成SSH密鑰和在Git中添加SSH密鑰,當在命令行中使用SSH URL對遠程倉庫執行git clone、git fetch、git pull或者git push命令時,系統將不會再要求用戶輸入github賬號用戶名和密碼。
6、git push提示輸入用戶名和密碼
使用SSH協議對倉庫進行管理能免密登錄,但是,當某些倉庫項目不屬於SSH協議時,例如https協議,當使用git push推送代碼到遠程,就會提示輸入github賬號用戶名和密碼,如下:
下面給出一個Linux下的解決方法:
在用戶根目錄下~/創建文件.git-credentials,並打開編輯,輸入內容:
$ cd ~/ $ touch .git-credentials $ vim .git-credentials
添加下面內容:
https://username:password@github.com
然后執行命令添加配置:
$ git config --global credential.helper store
查看配置列表是否多了credential.helper變量:
$ git config --list
這時,再去執行git push將不再需要輸入github賬號的用戶名和密碼。
7、如何刪除git
先找到git的安裝位置:
$ which -a git
然后進入到git所在的目錄:
$ cd /usr/local/bin/
將git進行刪除:
$ sudo rm -rf git*
8、小結
本文主要簡單介紹了git的安裝以及git的一些基本配置,並簡單介紹了如何在Git中添加SSH密鑰的辦法,並對在Linux下使用HTTPS協議管理遠程倉庫時git push提交代碼需要輸入github賬號的用戶名和密碼的問題提出了一個解決方法。
參考:
https://blog.csdn.net/chinassj/article/details/80323641
https://www.runoob.com/git/git-tutorial.html
https://www.runoob.com/git/git-install-setup.html
http://iissnan.com/progit/html/zh/ch1_4.html
https://segmentfault.com/a/1190000002645623
https://segmentfault.com/q/1010000000118744
https://www.jianshu.com/p/e93edea128a3