快速學習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個命令:

  1. git fetch:相當於是從遠程獲取最新版本到本地,不會自動merge(合併程式碼)
  2. 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同步的話參考上面的使用方法。