快速學習Git-遠程倉庫
- 2019 年 12 月 25 日
- 筆記
添加遠程庫
現在我們已經在本地創建了一個Git倉庫,又想讓其他人來協作開發,此時就可以把本地倉庫同步到遠程倉庫,同時還增加了本地倉庫的一個備份。
常用的遠程倉庫就是github:https://github.com/,接下來我們演示如何將本地程式碼同步到github。
在github上創建倉庫
首先你得在github上創建一個帳號,這個就不演示了。然後在github上創建一個倉庫:


點擊「create repository」按鈕倉庫就創建成功了。
Github支援兩種同步方式「https」和「ssh」。如果使用https很簡單基本不需要配置就可以使用,但是每次提交程式碼和下載程式碼時都需要輸入用戶名和密碼。如果使用ssh方式就需要客戶端先生成一個密鑰對,即一個公鑰一個私鑰。然後還需要把公鑰放到githib的伺服器上。這兩種方式在實際開發中都用應用,所以我們都需要掌握。接下來我們先看ssh方式。
ssh協議
什麼是ssh
SSH 為 Secure Shell(安全外殼協議) 的縮寫,由 IETF 的網路小組(Network Working Group)所制定。SSH 是目前較可靠,專為遠程登錄會話和其他網路服務提供安全性的協議。利用 SSH 協議可以有效防止遠程管理過程中的資訊泄露問題。
基於密匙的安全驗證
使用ssh協議通訊時,推薦使用基於密鑰的驗證方式。你必須為自己創建一對密匙,並把公用密匙放在需要訪問的伺服器上。如果你要連接到SSH伺服器上,客戶端軟體就會向伺服器發出請求,請求用你的密匙進行安全驗證。伺服器收到請求之後,先在該伺服器上你的主目錄下尋找你的公用密匙,然後把它和你發送過來的公用密匙進行比較。如果兩個密匙一致,伺服器就用公用密匙加密「質詢」(challenge)並把它發送給客戶端軟體。客戶端軟體收到「質詢」之後就可以用你的私人密匙解密再把它發送給伺服器。
ssh密鑰生成
在windows下我們可以使用 Git Bash.exe來生成密鑰,可以通過開始菜單或者右鍵菜單打開Git Bash


git bash 執行命令,生命公鑰和私鑰
命令: ssh-keygen -t rsa

執行命令完成後,在window本地用戶.ssh目錄C:Users用戶名.ssh下面生成如下名稱的公鑰和私鑰:

ssh密鑰配置
密鑰生成後需要在github上配置密鑰本地才可以順利訪問。


在key部分將id_rsa.pub文件內容添加進去,然後點擊「Add SSH key」按鈕完成配置。
同步到遠程倉庫
同步到遠程倉庫可以使用git bash也可以使用tortoiseGit
使用git bash
在倉庫所在的目錄(D:tempgitrepository)點擊右鍵選擇「Git Bash Here」,啟動git bash程式。

然後在git bash中執行如下語句:
git remote add origin [email protected]:sublun/mytest.git git push -u origin master
注意:其中紅色字體部分需要替換成個人的用戶名。
如何出現如下錯誤:

可以先執行如下命令,然後再執行上面的命令
$ git remote rm origin

使用Tortoise Git同步
一、由於TortoiseGit使用的ssh工具是「PuTTY」git Bash使用的ssh工具是「openSSH」,如果想讓TortoiseGit也使用剛才生成的密鑰可以做如下配置:


Url:遠程倉庫的地址 推送URL:也是相同的 Putty密鑰:選擇剛才生成的密鑰中的私鑰
二、同步。在本地倉庫的文件夾中單擊右鍵,選擇「Git同步」


從遠程倉庫克隆
克隆遠程倉庫也就是從遠程把倉庫複製一份到本地,克隆後會創建一個新的本地倉庫。選擇一個任意部署倉庫的目錄,然後克隆遠程倉庫。
使用git bash
$ git clone [email protected]:sublun/mytest.git
使用Tortoise Git
在任意目錄點擊右鍵:



從遠程倉庫取程式碼
Git中從遠程的分支獲取最新的版本到本地有這樣2個命令:
- git fetch:相當於是從遠程獲取最新版本到本地,不會自動merge(合併程式碼)
- git pull:相當於是從遠程獲取最新版本並merge到本地
上述命令其實相當於git fetch 和 git merge
在實際使用中,git fetch更安全一些 因為在merge前,我們可以查看更新情況,然後再決定是否合併
如果使用Tortoise Git的話可以從右鍵菜單中點擊「拉取」(pull)或者「獲取」(fetch)

搭建私有Git伺服器
伺服器搭建
遠程倉庫實際上和本地倉庫沒啥不同,純粹為了7×24小時開機並交換大家的修改。GitHub就是一個免費託管開源程式碼的遠程倉庫。但是對於某些視源程式碼如生命的商業公司來說,既不想公開源程式碼,又捨不得給GitHub交保護費,那就只能自己搭建一台Git伺服器作為私有倉庫使用。 搭建Git伺服器需要準備一台運行Linux的機器,在此我們使用CentOS。以下為安裝步驟: 1、安裝git服務環境準備
yum -y install curl curl-devel zlib-devel openssl-devel perl cpio expat-devel gettext-devel gcc cc
2、下載git-2.5.0.tar.gz
- 1)解壓縮
- 2)cd git-2.5.0
- 3)autoconf
- 4)./configure
- 5)make
- 6)make install
3、添加用戶 adduser -r -c 『git version control』 -d /home/git -m git 此命令執行後會創建/home/git目錄作為git用戶的主目錄。
4、設置密碼
passwd git
輸入兩次密碼
5、切換到git用戶
su git
6、創建git倉庫
git --bare init /home/git/first
注意:如果不使用「–bare」參數,初始化倉庫後,提交master分支時報錯。這是由於git默認拒絕了push操作,需要.git/config添加如下程式碼:
[receive] denyCurrentBranch = ignore
推薦使用:git –bare init初始化倉庫。
連接伺服器
私有git伺服器搭建完成後就可以向連接github一樣連接使用了,但是我們的git伺服器並沒有配置密鑰登錄,所以每次連接時需要輸入密碼。 使用命令連接:
$ git remote add origin ssh://[email protected]/home/git/first
這種形式和剛才使用的形式好像不一樣,前面有ssh://前綴,好吧你也可以這樣寫:
$ git remote add origin [email protected]:first
使用TortoiseGit同步的話參考上面的使用方法。