Git 遠程倉庫(Github)

Git 遠程倉庫(Github)

Git 并不像 SVN 那樣有個中心服務(wù)器。

目前我們使用到的 Git 命令都是在本地執(zhí)行,如果你想通過 Git 分享你的代碼或者與其他開發(fā)人員合作。 你就需要將數(shù)據(jù)放到一臺其他開發(fā)人員能夠連接的服務(wù)器上。

本例使用了 Github 作為遠程倉庫,你可以先閱讀我們的 Github 簡明教程。


添加遠程庫

要添加一個新的遠程倉庫,可以指定一個簡單的名字,以便將來引用,命令格式如下:

git remote add [shortname] [url]

本例以Github為例作為遠程倉庫,如果你沒有Github可以在官網(wǎng)https://github.com/注冊。

由于你的本地Git倉庫和GitHub倉庫之間的傳輸是通過SSH加密的,所以我們需要配置驗證信息:

使用以下命令生成SSH Key:

$ ssh-keygen -t rsa -C "youremail@example.com"

后面的 your_email@youremail.com 改為你在 github 上注冊的郵箱,之后會要求確認(rèn)路徑和輸入密碼,我們這使用默認(rèn)的一路回車就行。成功的話會在~/下生成.ssh文件夾,進去,打開 id_rsa.pub,復(fù)制里面的 key。

回到 github 上,進入 Account => Settings(賬戶配置)。

img

左邊選擇 SSH and GPG keys,然后點擊 New SSH key 按鈕,title 設(shè)置標(biāo)題,可以隨便填,粘貼在你電腦上生成的 key。

img

添加成功后界面如下所示

img

為了驗證是否成功,輸入以下命令:

$ ssh -T git@github.com
Hi tianqixin! You've successfully authenticated, but GitHub does not provide shell access.

以下命令說明我們已成功連上 Github。

之后登錄后點擊" New repository " 如下圖所示:

img

之后在在Repository name 填入 runoob-git-test(遠程倉庫名) ,其他保持默認(rèn)設(shè)置,點擊"Create repository"按鈕,就成功地創(chuàng)建了一個新的Git倉庫:

img

創(chuàng)建成功后,顯示如下信息:

img

以上信息告訴我們可以從這個倉庫克隆出新的倉庫,也可以把本地倉庫的內(nèi)容推送到GitHub倉庫。

現(xiàn)在,我們根據(jù) GitHub 的提示,在本地的倉庫下運行命令:

$ mkdir runoob-git-test                     # 創(chuàng)建測試目錄
$ cd runoob-git-test/                       # 進入測試目錄
$ echo "# 菜鳥教程 Git 測試" >> README.md     # 創(chuàng)建 README.md 文件并寫入內(nèi)容
$ ls                                        # 查看目錄下的文件
README
$ git init                                  # 初始化
$ git add README.md                         # 添加文件
$ git commit -m "添加 README.md 文件"        # 提交并備注信息
[master (root-commit) 0205aab] 添加 README.md 文件
 1 file changed, 1 insertion(+)
 create mode 100644 README.md

# 提交到 Github
$ git remote add origin git@github.com:tianqixin/runoob-git-test.git
$ git push -u origin master

以下命令請根據(jù)你在Github成功創(chuàng)建新倉庫的地方復(fù)制,而不是根據(jù)我提供的命令,因為我們的Github用戶名不一樣,倉庫名也不一樣。

接下來我們返回 Github 創(chuàng)建的倉庫,就可以看到文件已上傳到 Github上:

img

查看當(dāng)前的遠程庫

要查看當(dāng)前配置有哪些遠程倉庫,可以用命令:

git remote

實例

$ git remote
origin
$ git remote -v
origin    git@github.com:tianqixin/runoob-git-test.git (fetch)
origin    git@github.com:tianqixin/runoob-git-test.git (push)

執(zhí)行時加上 -v 參數(shù),你還可以看到每個別名的實際鏈接地址。


提取遠程倉庫

Git 有兩個命令用來提取遠程倉庫的更新。

1、從遠程倉庫下載新分支與數(shù)據(jù):

git fetch

該命令執(zhí)行完后需要執(zhí)行g(shù)it merge 遠程分支到你所在的分支。

2、從遠端倉庫提取數(shù)據(jù)并嘗試合并到當(dāng)前分支:

git merge

該命令就是在執(zhí)行 git fetch 之后緊接著執(zhí)行 git merge 遠程分支到你所在的任意分支。

假設(shè)你配置好了一個遠程倉庫,并且你想要提取更新的數(shù)據(jù),你可以首先執(zhí)行 git fetch [alias] 告訴 Git 去獲取它有你沒有的數(shù)據(jù),然后你可以執(zhí)行 git merge [alias]/[branch] 以將服務(wù)器上的任何更新(假設(shè)有人這時候推送到服務(wù)器了)合并到你的當(dāng)前分支。

接下來我們在 Github 上點擊" README.md" 并在線修改它:

img

然后我們在本地更新修改。

$ git fetch origin
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From github.com:tianqixin/runoob-git-test
   0205aab..febd8ed  master     -> origin/master

以上信息"0205aab..febd8ed master -> origin/master" 說明 master 分支已被更新,我們可以使用以下命令將更新同步到本地:

$ git merge origin/master
Updating 0205aab..febd8ed
Fast-forward
 README.md | 1 +
 1 file changed, 1 insertion(+)

查看 README.md 文件內(nèi)容:

$ cat README.md 
# 菜鳥教程 Git 測試
## 第一次修改內(nèi)容

推送到遠程倉庫

推送你的新分支與數(shù)據(jù)到某個遠端倉庫命令:

git push [alias] [branch]

以上命令將你的 [branch] 分支推送成為 [alias] 遠程倉庫上的 [branch] 分支,實例如下。

$ touch runoob-test.txt      # 添加文件
$ git add runoob-test.txt 
$ git commit -m "添加到遠程"
master 69e702d] 添加到遠程
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 runoob-test.txt

$ git push origin master    # 推送到 Github

重新回到我們的 Github 倉庫,可以看到文件以及提交上來了:

img

刪除遠程倉庫

刪除遠程倉庫你可以使用命令:

git remote rm [別名]

實例

$ git remote -v
origin    git@github.com:tianqixin/runoob-git-test.git (fetch)
origin    git@github.com:tianqixin/runoob-git-test.git (push)

# 添加倉庫 origin2
$ git remote add origin2 git@github.com:tianqixin/runoob-git-test.git

$ git remote -v
origin    git@github.com:tianqixin/runoob-git-test.git (fetch)
origin    git@github.com:tianqixin/runoob-git-test.git (push)
origin2    git@github.com:tianqixin/runoob-git-test.git (fetch)
origin2    git@github.com:tianqixin/runoob-git-test.git (push)

# 刪除倉庫 origin2
$ git remote rm origin2
$ git remote -v
origin    git@github.com:tianqixin/runoob-git-test.git (fetch)
origin    git@github.com:tianqixin/runoob-git-test.git (push)

使用 CODING 倉庫

對于開發(fā)者而言 GitHub 已經(jīng)不陌生了,在平時的開發(fā)中將代碼托管到 GitHub 上十分方便。但是、國內(nèi)用戶通常會遇到一個問題就是: GitHub 的訪問速度太慢。在阿里云和騰訊云的主機上 clone 代碼時,如果主機的帶寬不夠大,clone 代碼簡直就是龜速。常常還會出現(xiàn):丟包、失去連接等情況。對于這種情況,如果你想體驗飛速的 Git 服務(wù),不妨試著用一下 Cloud Studio 平臺。相對于GitHub,CODING 除了提供免費的 Git 倉庫之外,還給我們提供了免費的私有倉庫(免費的普通會員提供 10 個私有項目、512M Git 倉庫容量)。此外、CODING 還為我們免費提供了,項目管理、任務(wù)管理、團隊管理、文件管理等功能,十分強大。

下面,我是試著來創(chuàng)建一個 CODING 項目,并且將 GitHub 上的代碼遷移到 CODING。通常,分為三步:

  • 1、創(chuàng)建 CODING 項目
  • 2、將 GitHub 代碼 Pull 到本地
  • 3、本地關(guān)聯(lián) CODING 倉庫,Push 代碼到 CODING

創(chuàng)建 CODING 項目:

登錄 Cloud Studio 注冊賬號,讓后在項目管理頁面中創(chuàng)建項目,這一步不做贅述,按你的需要填寫項目名稱與描述,選擇 License 類型即可,關(guān)于 License 的選擇可以參考這篇文章:如何選擇開源許可證?。項目創(chuàng)建完成中,在右側(cè)菜單欄中的代碼選項卡可以對代碼進行相關(guān)的管理與操作

img
img

將 GitHub 代碼 Pull 到本地:

登錄 GitHub 選擇你想要導(dǎo)入的倉庫并復(fù)制倉庫地址,在本地執(zhí)行命令,將 GitHub 倉庫代碼拉下來:

img
sudo git clone

本地關(guān)聯(lián) CODING 倉庫,Push 代碼到 CODING:

首先我們執(zhí)行命令:git remote -v

img

可以看到,當(dāng)前的 git 已經(jīng)關(guān)聯(lián)了一個遠程倉庫。

因此,接下來我們執(zhí)行以下命令,來關(guān)聯(lián) CODING 遠程倉庫(后面的倉庫地址需要替換為你的 CODING 項目的地址?。?第一條命令的作用是刪除現(xiàn)有的倉庫關(guān)聯(lián),后面兩條命令則是將倉庫關(guān)聯(lián)到 CODING 的地址,并且將代碼 Push 到 master 分支

sudo git remote rm origin
sudo git remote add origin https://git.coding.net/xxx/xxx.git
sudo git push -u origin master

之后,我們再次進入 CODING 項目中代碼管理的頁面,便可以看到我們剛才 Push 上去的代碼了。至此、GitHub 上的項目已經(jīng)完整遷移到了 CODING 平臺!

img

CODING 倉庫的免密碼 Push/Pull

代碼遷移到 CODING 之后,我們發(fā)現(xiàn),每次 Push/Pull 代碼的時候都會提示我們輸入用戶名和密碼。這是因為,我們的項目還沒有添加 SSH Key,只能通過用戶名/密碼驗證。 而 CODING 是為我們提供了公鑰驗證的方式的,進入項目管理,在左側(cè)選項卡中點擊"公鑰部署"按鈕,然后點擊右側(cè)的"新建公鑰部署"

img

我們將本地的公鑰內(nèi)容粘貼到對應(yīng)位置,并且給公鑰命名一下(查看/生成本機公鑰,可以參考這篇博文:查看本機 ssh 公鑰,生成公鑰)。勾選"授予推送權(quán)限"則可以授予這臺機器Push代碼的權(quán)限。

img

保存好設(shè)置后,我們再次嘗試。此時,Push/Pull 代碼不在需要驗證用戶名密碼。至此,我們的代碼便完全托管在了 CODING 平臺上,享受他的便捷與飛速吧!

如有疑問請查閱幫助文檔

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,852評論 9 163
  • 貴陽機場,一別廣瀨慶。然后呢,搶高鐵票回家。 高鐵在貴陽北站,離機場有點距離。坐大巴可以,但,時間有點拖沓。 選擇...
    魯長安閱讀 324評論 0 0
  • 小學(xué)的時候有一個好習(xí)慣,總是在功課做完之后才會去找小伙伴玩;到了初中的時候每次作業(yè)也會完成,但總是習(xí)慣性的選...
    一只小熊GX閱讀 307評論 0 2

友情鏈接更多精彩內(nèi)容