以前的這篇文章「從0開始學習 GitHub 系列之「Git速成」」相信你們都已經對 Git 的基本操做熟悉了,可是這篇文章只介紹了對本地 Git 倉庫的基本操做,今天我就來介紹下如何跟遠程倉庫一塊兒協做,教大家向 GitHub 上提交大家的第一行代碼!git
你擁有了一個 GitHub 帳號以後,就能夠自由的 clone 或者下載其餘項目,也能夠建立本身的項目,可是你無法提交代碼。仔細想一想也知道,確定不可能隨意就能提交代碼的,若是隨意能夠提交代碼,那麼 GitHub 上的項目豈不亂了套了,因此提交代碼以前必定是須要某種受權的,而 GitHub 上通常都是基於 SSH 受權的。程序員
那麼什麼是 SSH 呢?
簡單點說,SSH是一種網絡協議,用於計算機之間的加密登陸。目前是每一臺 Linux 電腦的標準配置。而大多數 Git 服務器都會選擇使用 SSH 公鑰來進行受權,因此想要在 GitHub 提交代碼的第一步就是要先添加 SSH key 配置。github
Linux 與 Mac 都是默認安裝了 SSH ,而 Windows 系統安裝了 Git Bash 應該也是帶了 SSH 的。你們能夠在終端(win下在 Git Bash 裏)輸入 ssh 若是出現如下提示證實你本機已經安裝 SSH, 不然請搜索自行安裝下。算法
緊接着輸入 ssh-keygen -t rsa ,什麼意思呢?就是指定 rsa 算法生成密鑰,接着連續三個回車鍵(不須要輸入密碼),而後就會生成兩個文件 id_rsa 和 id_rsa.pub ,而 id_rsa 是密鑰,id_rsa.pub 就是公鑰。這兩文件默認分別在以下目錄裏生成:安全
Linux/Mac 系統 在 ~/.ssh 下,win系統在 /c/Documents and Settings/username/.ssh 下,都是隱藏文件,相信大家有辦法查看的。服務器
接下來要作的是把 id_rsa.pub 的內容添加到 GitHub 上,這樣你本地的 id_rsa 密鑰跟 GitHub 上的 id_rsa.pub 公鑰進行配對,受權成功才能夠提交代碼。微信
第一步先在 GitHub 上的設置頁面,點擊最左側 SSH and GPG keys :網絡
而後點擊右上角的 New SSH key 按鈕:ssh
須要作的只是在 Key 那欄把 id_rsa.pub 公鑰文件裏的內容複製粘貼進去就能夠了(上述示例爲了安全粘貼的公鑰是無效的),Title 那欄不須要填寫,點擊 Add SSH key 按鈕就ok了。學習
這裏提醒下,怎麼查看 id_rsa.pub 文件的內容?
Linux/Mac 用戶執行如下命令:
cd ~/.ssh cat id_rsa.pub
Windows用戶,設置顯示隱藏文件,可使用 EditPlus 或者 Sublime 打開復制就好了。
SSH key 添加成功以後,輸入 ssh -T git@github.com 進行測試,若是出現如下提示證實添加成功了。
在提交代碼以前咱們先要了解兩個命令,也是上次的文章沒有介紹的,由於這兩個命令須要跟遠程倉庫配合。
Push :直譯過來就是「推」的意思,什麼意思呢?若是你本地代碼有更新了,那麼就須要把本地代碼推到遠程倉庫,這樣本地倉庫跟遠程倉庫就能夠保持同步了。
代碼示例: git push origin master
意思就是把本地代碼推到遠程 master 分支。
Pull:直譯過來就是「拉」的意思,若是別人提交代碼到遠程倉庫,這個時候你須要把遠程倉庫的最新代碼拉下來,而後保證兩端代碼的同步。
代碼示例: git pull origin master
意思就是把遠程最新的代碼更新到本地。通常咱們在 push 以前都會先 pull ,這樣不容易衝突。
添加 SSH key 成功以後,咱們就有權限向 GitHub 上咱們本身的項目提交代碼了,而提交代碼有兩種方法:
Clone本身的項目
咱們以我在 GitHub 上建立的 test 項目爲例,執行以下命令:
git clone git@github.com:stormzhang/test.git
這樣就把 test 項目 clone 到了本地,你能夠把 clone 命令理解爲高級點的複製,這個時候該項目自己就已是一個git 倉庫了,不須要執行 git init 進行初始化,並且甚至都已經關聯好了遠程倉庫,咱們只須要在這個 test 目錄下任意修改或者添加文件,而後進行 commit ,以後就能夠執行:
git push origin master
進行代碼提交,這種是最簡單方便的一種方式。
至於怎麼獲取項目的倉庫地址呢?以下圖:
關聯本地已有項目
若是咱們本地已經有一個完整的 git 倉庫,而且已經進行了不少次 commit ,這個時候第一種方法就不適合了。
假設咱們本地有個 test2 的項目,咱們須要的是在 GitHub 上建一個 test 的項目,而後把本地 test2 上的全部代碼 commit 記錄提交到 GitHub 上的 test 項目。
第一步就是在 GitHub 上建一個 test 項目,這個想必你們都會了,就不用多講了。
第二步把本地 test2 項目與 GitHub 上的 test 項目進行關聯,切換到 test2 目錄,執行以下命令:
git remote add origin git@github.com:stormzhang/test.git
什麼意思呢?就是添加一個遠程倉庫,他的地址是 git@github.com:stormzhang/test.git ,而 origin 是給這個項目的遠程倉庫起的名字,是的,名字你能夠隨便取,只不過你們公認的只有一個遠程倉庫時名字就是 origin ,爲何要給遠程倉庫取名字?由於咱們可能一個項目有多個遠程倉庫?好比 GitHub 一個,好比公司一個,這樣的話提交到不一樣的遠程倉庫就須要指定不一樣的倉庫名字了。
查看咱們當前項目有哪些遠程倉庫能夠執行以下命令:
git remote -v
接下來,咱們本地的倉庫就能夠向遠程倉庫進行代碼提交了:
git push origin master
就是默認向 GitHub 上的 test 目錄提交了代碼,而這個代碼是在 master 分支。固然你能夠提交到指定的分支,這個以後的文章再詳細講解。
對了,友情提醒,在提交代碼以前先要設置下本身的用戶名與郵箱,這些信息會出如今全部的 commit 記錄裏,執行如下代碼就能夠設置:
git config —global user.name "stormzhang" git config —global user.email "stormzhang.dev@gmail.com"
經過本文的介紹,終於你們能夠成功的向 GitHub 提交代碼了,可是相信你們還有不少疑問,好比關於分支的理解與使用,好比 git 的其餘一些有用的配置,好比怎麼向一些開源項目貢獻代碼,發起 Pull Request 等,以後的系列文章會逐一進行介紹,敬請期待。
PS:昨天的文章「如何在一羣程序員中識別Android開發?」,是我寫這麼多文章以來第一次沒有一個反對意見的,回覆全是清一色的「有理有據,深度好文」,還有表示「看了個人文章後特地去照了下鏡子,忽然發現說的太他媽對了」,還有說「終於找到了爲何一開始就選中 Android 的緣由了」,我只能說,低調低調!
PS:之前大家生日的時候都在我文章底下評論求祝福,我給大家祝福過,號召點贊過,甚至還給有些人發過紅包,其實我想說,28年前的今天,一位偉大的程序員誕生了,由於天生長得帥,因此命中註定選擇了 Android 開發,今天終於輪到我生日了,還特地給大家準備了一篇乾貨,大家看着辦吧!
本文原創發佈於微信公衆號 AndroidDeveloper「googdev」,轉載請務必註明出處!