7.1、註冊Github賬號
7.1.1、訪問官網
Github 官網:https://github.com/
先訪問GitHub的官網首頁,點選 sign in (登入),跳轉到登入頁。
7.1.2、進入登入頁
因為目前還沒有GitHub的賬號,所以先註冊一個賬號。
7.1.3、填寫註冊資訊
輸入郵箱、密碼和使用者名稱。
同意接收相關郵件。
7.1.4、註冊驗證
輸入傳送到註冊郵箱中的驗證碼。
7.1.5、登入個人主頁
註冊成功後,會自動跳轉到個人主頁。
7.1.6、演示賬號
賬號 | 姓名 | 郵箱 |
---|---|---|
lb-liao | 劉備 | lb_liaojy@163.com |
km-liao | 孔明 | km_liaojy@163.com |
zy-liao | 周瑜 | zy_liaojy@163.com |
出於演示效果需要,本文使用了三個 GitHub 賬號(見上表)。
7.2、建立遠端倉庫
如上圖所示,即將建立一個名為 kfhs 的遠端倉庫;因為在 lb-liaojy 賬號的名下還沒有這個名字的倉庫,所以可以使用倉庫名。
此外,還設定了該倉庫的分類為 public (GitHub的預設分類),表示是公共倉庫,讀許可權是完全放開的;與之相反的是私有倉庫 private 。
如上圖所示,設定完倉庫名稱和型別後,即可點選“Create repository”按鈕,從而建立一個倉庫。
如上圖所示,就是剛建立倉庫成功後,什麼專案內容都還沒有的樣子,但我們可以看到該遠端倉庫的 HTTPS 連結。
7.3、命令速查表
命令 | 作用 |
---|---|
git remote -v | 檢視已設定的所有遠端地址別名 |
git remote add 別名 遠端地址 | 為一個遠端地址設定別名 |
git push 別名 分支名 | 推送本地倉庫某分支的內容到遠端倉庫 |
git pull 遠端庫地址(別名) 遠端分支名 | 將遠端倉庫某分支的更新內容拉取到本地倉庫 |
git clone 遠端倉庫地址 | 將遠端倉庫克隆到本地 |
7.4、遠端倉庫的別名
7.4.1、建立一個本地庫
注意:本地倉庫名稱和遠端倉庫名稱,最好是相同的。
7.4.2、檢視遠端倉庫的別名列表
如上圖所示,別名列表為空,表示目前還沒為任何遠端倉庫設定別名。
git remote -v
7.4.3、設定遠端倉庫的別名
如上圖所示,為遠端倉庫地址 https://github.com/lb-liaojy/kfhs.git 設定了一個別名 kfhs
git remote add 別名 遠端地址
注意:遠端倉庫地址的別名,最好和遠端倉庫名稱相同。
7.4.4、確認剛設定的遠端倉庫別名
如上圖所示,一個別名會對應遠端倉庫地址的兩種型別,分別用於拉取(fetch)和推送(push)。
注意:每個本地倉庫都有自己的遠端倉庫別名列表,相互獨立,互不影響。
7.5、推送本地庫到遠端庫
7.5.1、在本地庫新增內容
如上圖所示,在本地庫新增了一個 plan.txt 檔案,其內容為“匡扶漢室”。
7.5.2、檢視憑據管理器
如上圖所示,目前還沒有 GitHub 賬號的相關憑據。
7.5.3、推送本地庫的master分支到遠端庫
如上圖所示,往遠端倉庫推送內容,需要登入具備相應許可權的 GitHub 賬號。
因為已在瀏覽器中登入了 GitHub 賬號,所以可以直接點選“Sign in with your browser”按鈕,跳轉到瀏覽器頁面進行授權。
如上圖所示,點選“Authorize git-ecosystem”按鈕,即可將瀏覽器中的 GitHub 賬號登入狀態,同步到 Windows 系統中。
如上圖所示,已成功推送本地庫的master分支到遠端庫。
7.5.4、確認憑據管理器
如上圖所示,Windows系統已記錄了 GitHub 的登入憑據,這樣以後就不需要再次授權,可以直接往遠端倉庫推送內容。
7.5.5、檢視遠端庫
如上圖所示,本地庫master分支的內容,已成功推送到遠端庫。
7.6、拉取遠端庫到本地庫
7.6.1、線上直接修改遠端庫的內容
如上圖所示,點選需要修改的檔案。
如上圖所示,開啟需要修改的檔案後,點選編輯。
如上圖所示,修改完檔案內容後,點選提交按鈕。
如上圖所示,在提交彈窗中,填寫提交描述後,點選提交按鈕。
如上圖所示,已成功線上直接修改遠端庫的內容。此時,遠端庫和本地庫的內容已不一致,因此本地庫需要從遠端庫中,拉取更新的內容。
7.6.2、將遠端庫的更新內容拉取到本地庫
如上圖所示,已成功將遠端倉庫master分支的更新內容拉取到本地倉庫。
git pull 遠端庫地址(別名) 遠端分支名
7.6.3、檢視拉取的更新內容
如上圖所示,本地庫的內容,與遠端庫的內容,已經同步了。
注意:pull(拉取)命令,會自動將遠端分支的更新內容,提交到本地庫;因此本地庫不用再執行 git add 和 git commit 命令。
7.7、克隆遠端庫到本地庫
7.7.1、刪除GitHub賬號的憑據
如上圖所示,刪除了 GitHub 賬號的憑據。這樣做的原因是,為了證明克隆遠端庫到本地庫,不需要許可權。
7.7.2、複製遠端庫地址
7.7.3、將遠端庫克隆到本地庫
如上圖所示,已成功將遠端庫克隆到本地。
git clone 遠端倉庫地址
注意:由於GitHub是國外的網站,所以有時會因為網路問題,而產生下面的報錯資訊;一般多試幾次就能解決。
fatal: unable to access 'https://github.com/lb-liaojy/kfhs.git/': Failed to connect to github.com port 443 after 21043 ms: Couldn't connect to server
7.7.4、克隆的三個效果
如上圖所示,克隆命令實際產生了三個效果:
-
初始化本地倉庫:建立了和遠端倉庫同名的資料夾,該資料夾中還有用於版本控制的 .git 子資料夾。
-
拉取內容:本例為 plan.txt 檔案。
-
建立別名:自動為遠端倉庫地址建立了別名 origin 。
7.8、團隊內協作
7.8.1、修改本地庫檔案
如上圖所示,孔明克隆了劉備的遠端庫後,在本地庫對檔案內容做了修改。
7.8.2、推送本地庫的更新到遠端庫(非團隊成員)
如上圖所示,往遠端倉庫推送內容,需要登入具備相應許可權的 GitHub 賬號。
因為已在瀏覽器中登入了 GitHub 賬號,所以可以直接點選“Sign in with your browser”按鈕,跳轉到瀏覽器頁面進行授權。
注意:出於演示需要,瀏覽器現在登入的是孔明的賬號。
如上圖所示,點選“Authorize git-ecosystem”按鈕,即可將瀏覽器中的 GitHub 賬號登入狀態,同步到 Windows 系統中。
注意:出於演示需要,瀏覽器現在登入的是孔明的賬號。
如上圖所示,孔明往(劉備的)遠端庫推送本地庫的更新失敗,因為此時孔明還沒有往(劉備的)遠端庫的推送許可權。
7.8.3、邀請合作者加入團隊
如上圖所示,在該遠端庫的 Settings 的 Collaborations 中,點選“add people”按鈕,即可查詢想要邀請的合作者。
如上圖所示,透過搜尋孔明的 GitHub 賬號名稱,即可向其傳送合作邀請。
如上圖所示,向孔明傳送邀請後,還需等待其同意邀請。
7.8.4、同意加入團隊的邀請
如上圖所示,在孔明的 GitHub 信箱中,能看到劉備發來的邀請。
如上圖所示,孔明點選“Accept invitation”按鈕,即可加入劉備的團隊。
如上圖所示,加入劉備的團隊後,孔明便有了往劉備的遠端庫(kfhs)執行 push (推送)命令的許可權。
注意:劉備可以有多個遠端庫,各個遠端庫可以有不同的團隊成員。
7.8.5、推送本地庫的更新到遠端庫(是團隊成員)
如上圖所示,當孔明成功劉備遠端庫的團隊成員後,便可成功推送本地庫的更新到這個遠端庫。
7.8.6、檢視遠端庫
如上圖所示,孔明的本地庫更新,已成功推送到劉備的遠端庫。
注意:此時,劉備本地庫和遠端庫的內容已不一致,因此劉備本地庫需要從遠端庫中,拉取更新的內容。(具體操作見7.6節)
7.9、跨團隊協作
7.9.1、查詢遠端庫
如上圖所示,透過GitHub頂部的搜尋框輸入關鍵詞,即可查詢相關專案。(能精準匹配的關鍵詞格式:GitHub賬號名稱/遠端庫名稱)
注意:為演示需要,此時登入的GitHub賬號是周瑜的。
7.9.2、複製遠端庫
如上圖所示,在劉備的遠端庫中,點選“fork”按鈕,即可將該遠端庫複製一份到自己的 GitHub 賬號名下。
如上圖所示,還可以編輯複製到自己名下的遠端庫名。
注意:從已自動勾選的可選框可知,預設只複製主分支(master)。
如上圖所示,複製來的遠端庫,會顯示覆制的源頭。
7.9.3、對複製來的遠端庫進行修改
如上圖所示,周瑜成功對複製來的遠端庫內容做了修改更新;因為該遠端庫是自己名下的,所以不需要加入劉備的團隊,就能擁有寫許可權。
當然,這樣的修改,不會影響到劉備的遠端庫。
注意:線上直接修改遠端庫的詳細操作過程,可以參考 7.6.1 節。
7.9.4、周瑜傳送拉取請求(pr)
如上圖所示,建立拉取請求(pull request)時,可以對比兩個遠端庫分支的差異。
如上圖所示,傳送拉取請求時,會附帶拉取請求的標題(預設是提交資訊),還可以補充描述。
如上圖所示,傳送拉取請求成功。
7.9.5、劉備檢視拉取請求
如上圖所示,劉備看到了周瑜傳送的拉取請求。
如上圖所示,點選拉取請求的標題,檢視周瑜修改的內容。
如上圖所示,能看到這個拉取請求中,兩個遠端庫分支的差異對比。
7.9.6、在拉取請求中溝通
如上圖所示,劉備能在這個拉取請求中,向周瑜傳送訊息。
如上圖所示,周瑜看到劉備在這個拉取請求中的訊息後,也可以回訊息。
7.9.7、劉備合併拉取請求
如上圖所示,劉備稽核過周瑜的拉取請求後,覺得相關修改是有價值的,可以合併到自己的遠端庫中。
如上圖所示,合併拉取請求時,會有確認合併的提示。
如上圖所示,已成功合併。
如上圖所示,劉備的遠端庫中,有周瑜的提交資訊。
7.10、SSH免密登入
7.10.1、檢視遠端庫的SSH地址
如上圖所示,遠端庫地址除了HTTPS型別的之外,還有SSH型別。
如果使用HTTPS型別的就很簡單,基本不需要配置就可以使用,但是每次推送時,都需要用已登入GitHub賬號的瀏覽器授權(或輸入使用者名稱和密碼)。
SSH型別相比HTTPS型別的一個重要的優點是,只需要配置一次,就不用每次推送時,都重複需要用已登入GitHub賬號的瀏覽器授權(或輸入使用者名稱和密碼)。當然,前提是必須是該遠端庫的擁有者或合作者,且配置好了 SSH key (上圖顯示目前還沒配置好 SSH key )。
7.10.2、本地生成SSH金鑰
如上圖所示,先用 Git Bash 進入本地電腦的當前使用者的家目錄。
cd
如上圖所示,輸入生成金鑰的命令後,連續按回車即可。
ssh-keygen -t rsa -C GitHub賬號郵箱
-
ssh-keygen:生成SSH金鑰的命令。
-
-t:指定生成SSH金鑰的加密演算法,rsa 是著名的非對稱加密演算法。
-
-C(注意 C 是大寫的):用來指定標識郵箱。
注意:如果之前已經生成過SSH金鑰,可以執行以下命令刪除舊的
removed directory '.ssh'
7.10.3、檢視生成的SSH金鑰
如上圖所示,執行生成金鑰的命令後,會有一個“.ssh”的目錄,該目錄中有私鑰檔案“id_rsa”和公鑰檔案“id_rsa.pub”。
cd .ssh/
ll
如上圖所示,使用 cat 命令檢視公鑰檔案“id_rsa.pub”中的內容。
cat id_rsa.pub
7.10.4、在GitHub中新增公鑰
如上圖所示,點選 GitHub 賬號使用者頭像,在側彈窗中點選進入“Settings”。
如上圖所示,在“Settings”中,點選“SSH and GPG keys”,就可以看到“New SSH key”按鈕。
如上圖所示,將在本地生成的 SSH 公鑰複製到 GitHub ,併為其自定義一個標識名稱。
如上圖所示,已成功在 GitHub 中新增了一個本地電腦生成的公鑰。
這樣一來,以後在本地電腦,使用遠端倉庫的 SSH 地址執行 push (推送)命令的時候,就不需要登入了。
7.10.5、再次檢視遠端庫的SSH地址
如上圖所示,在 SSH 中已經沒有了警告彈窗,表明已配置好了 SSH key 。
7.10.6、刪除本地的GitHub登入憑據
如上圖所示,刪除了 GitHub 賬號的憑據。這樣做的原因是,為了證明 SSH 免密登入後已配置成功。
7.10.7、使用SSH地址拉取遠端庫
如上圖所示,此時劉備的本地庫與遠端庫不一致,遠端庫的更新還沒有同步到本地庫。
如上圖所示,第一次使用 SSH 地址,會有提示資訊,輸入“yes”回車即可。
如上圖所示,成功使用 SSH 地址(免密登入)拉取遠端庫的更新到本地庫。
7.10.8、使用SSH地址向遠端庫推送更新
如上圖所示,先在本地庫更新內容。
如上圖所示,成功使用 SSH 地址(免密登入)向遠端庫推送了本地庫的更新。
如上圖所示,遠端庫確實有了本地庫的更新。