git 連接 github 遠程倉庫


0.前言


github 設置添加 SSH

很多朋友在用 github 管理項目的時候,都是直接使用 https url 克隆到本地,當然也有些人使用 SSH url 克隆到本地。然而,為什么絕大多數人會使用 https url 克隆呢?
這是因為,使用 https url 克隆對初學者來說會比較方便,復制 https url 然后到 git Bash 里面直接用 clone 命令克隆到本地就好了。而使用 SSH url 克隆卻需要在克隆之前先配置和添加好 SSH key 。
因此,如果你想要使用 SSH url 克隆的話,你必須是這個項目的擁有者。否則你是無法添加 SSH key 的。

https 和 SSH 的區別:

  1. 前者可以隨意克隆 github 上的項目,而不管是誰的;而后者則是你必須是你要克隆的項目的擁有者或管理員,且需要先添加 SSH key ,否則無法克隆。
  2. https url 在 push 的時候是需要驗證用戶名和密碼的;而 SSH 在 push 的時候,是不需要輸入用戶名的,如果配置 SSH key 的時候設置了密碼,則需要輸入密碼的,否則直接是不需要輸入密碼的。

1.在 github 上添加 SSH key 的步驟:


1.首先需要檢查你電腦是否已經有 SSH key

運行 git Bash 客戶端,輸入如下代碼:

$ cd ~/.ssh
$ ls

這兩個命令就是檢查是否已經存在 id_rsa.pub 或 id_dsa.pub 文件,如果文件已經存在,那么你可以跳過步驟 2,直接進入步驟 3。

2.創建一個 SSH key

$ ssh-keygen -t rsa -C "your_email@example.com"
代碼參數含義:

-t 指定密鑰類型,默認是 rsa ,可以省略。
-C 設置注釋文字,比如郵箱。
-f 指定密鑰文件存儲文件名。

以上代碼省略了 -f 參數,因此,運行上面那條命令后會讓你輸入一個文件名,用於保存剛才生成的 SSH key 代碼,如:

Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/you/.ssh/id_rsa): [Press enter]

當然,你也可以按enter不輸入文件名,使用默認文件名(推薦),那么就會生成 id_rsa 和 id_rsa.pub 兩個秘鑰文件。

接着又會提示你輸入兩次密碼(該密碼是你 push 文件的時候要輸入的密碼,而不是 github 管理者的密碼),

當然,你也可以不輸入密碼,直接按回車。那么 push 的時候就不需要輸入密碼,直接提交到 github 上了,如:

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

接下來,就會顯示如下代碼提示,如:

Your identification has been saved in /c/Users/you/.ssh/id_rsa.
Your public key has been saved in /c/Users/you/.ssh/id_rsa.pub.
The key fingerprint is:
01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db your_email@example.com

當你看到上面這段代碼的時候,那就說明,你的 SSH key 已經創建成功,你只需要添加到 github 的 SSH key 上就可以了。

3.添加你的 SSH key 到 github 上面去

  1. 首先你需要拷貝 id_rsa.pub 文件的內容,你可以用編輯器打開文件復制,也可以用 git 命令復制該文件的內容,如:

$ clip < ~/.ssh/id_rsa.pub

  1. 登錄你的 github 賬號,從又上角的設置( Account Settings )進入,然后點擊菜單欄的 SSH key 進入頁面添加 SSH key。

  2. 點擊 Add SSH key 按鈕添加一個 SSH key 。把你復制的 SSH key 代碼粘貼到 key 所對應的輸入框中,記得 SSH key 代碼的前后不要留有空格或者回車。當然,上面的 Title 所對應的輸入框你也可以輸入一個該 SSH key 顯示在 github 上的一個別名。默認的會使用你的郵件名稱。

4.測試一下該 SSH key

在 git Bash 中輸入以下代碼

$ ssh -T git@github.com

當你輸入以上代碼時,會有一段警告代碼,如:

The authenticity of host 'github.com (207.97.227.239)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)?

這是正常的,你輸入 yes 回車既可。如果你創建 SSH key 的時候設置了密碼,接下來就會提示你輸入密碼,如:

Enter passphrase for key '/c/Users/Administrator/.ssh/id_rsa':

當然如果你密碼輸錯了,會再要求你輸入,知道對了為止。

注意:輸入密碼時如果輸錯一個字就會不正確,使用刪除鍵是無法更正的。

密碼正確后你會看到下面這段話,如:

Hi username! You've successfully authenticated, but GitHub does not
provide shell access.

如果用戶名是正確的,你已經成功設置 SSH 密鑰。如果你看到 “access denied” ,者表示拒絕訪問,那么你就需要使用 https 去訪問,而不是 SSH 。

2.遠程倉庫操作


1.本地倉庫推送到遠程倉庫

現在的情景是:我們已經在本地創建了一個 Git 倉庫后,又想在 github 創建一個 Git 倉庫,並且希望這兩個倉庫進行遠程同步,這樣 github 的倉庫可以作為備份,又可以其他人通過該倉庫來協作。

首先,登錄 github 上,然后在右上角找到 “create a new repo” 創建一個新的倉庫。
在 Repository name 填入 testgit,其他保持默認設置,點擊 “Create repository” 按鈕,就成功地創建了一個新的 Git 倉庫:

目前,在 GitHub 上的這個 testgit 倉庫還是空的,GitHub 告訴我們,可以從這個倉庫克隆出新的倉庫,也可以把一個已有的本地倉庫與之關聯,然后,把本地倉庫的內容推送到 GitHub 倉庫。
現在,我們根據 GitHub 的提示,在本地的 testgit 倉庫下運行命令:
$ git remote add origin https://github.com/username/testgit.git
把本地庫的內容推送到遠程,使用命令:
$ git push -u origin master
如果本地倉庫沒有過 commit,那么此時就會報錯:

$ git push -u origin master
error: src refspec master does not match any.
error: failed to push some refs to 'git@github.com:username/testgit.git'

原因:
本地倉庫為空
解決方法:

  1. 使用命令 git add 添加文件。
  2. 使用命令 git commit 提交修改。

git push 命令實際上是把當前分支 master 推送到遠程。由於遠程庫是空的,我們第一次推送 master 分支時,加上了 –u 參數,Git 不但會把本地的 master 分支內容推送的遠程新的 master 分支,還會把本地的 master 分支和遠程的 master 分支關聯起來,在以后的推送或者拉取時就可以簡化命令。
推送成功后,可以立刻在 github 頁面中看到遠程庫的內容已經和本地一模一樣了。
從現在起,只要本地作了提交,就可以通過如下命令:
$ git push origin master
把本地 master 分支的最新修改推送到 github 上了,現在你就擁有了真正的分布式版本庫了。

2.遠程倉庫克隆到本地倉庫

上面我們了解了先有本地庫,后有遠程庫時候,如何關聯遠程庫。
現在我們想,假如遠程庫有新的內容了,我想克隆到本地來 如何克隆呢?
首先,登錄 github,創建一個新的倉庫,名字叫 testgit2. 如下:

現在,遠程庫已經准備好了,下一步是使用命令 git clone 克隆一個本地庫了。如下所示:
$ git clone git@github.com:username/testgit2.git
接着在我本地目錄下 生成 testgit2 目錄了,如下所示:

接下來在本地上對 testgit2 的修改就可以通過命令 git push 推送到遠程倉庫。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM