7、Git之Github操作

Javaer1995發表於2024-06-28

7.1、註冊Github賬號

7.1.1、訪問官網

Github 官網:https://github.com/

image

先訪問GitHub的官網首頁,點選 sign in (登入),跳轉到登入頁。

7.1.2、進入登入頁

image

因為目前還沒有GitHub的賬號,所以先註冊一個賬號。

7.1.3、填寫註冊資訊

image

輸入郵箱、密碼和使用者名稱。

image

同意接收相關郵件。

7.1.4、註冊驗證

image

image

image

image

輸入傳送到註冊郵箱中的驗證碼。

7.1.5、登入個人主頁

image

註冊成功後,會自動跳轉到個人主頁。

7.1.6、演示賬號

賬號 姓名 郵箱
lb-liao 劉備 lb_liaojy@163.com
km-liao 孔明 km_liaojy@163.com
zy-liao 周瑜 zy_liaojy@163.com

出於演示效果需要,本文使用了三個 GitHub 賬號(見上表)。

7.2、建立遠端倉庫

image

image

如上圖所示,即將建立一個名為 kfhs 的遠端倉庫;因為在 lb-liaojy 賬號的名下還沒有這個名字的倉庫,所以可以使用倉庫名。

此外,還設定了該倉庫的分類為 public (GitHub的預設分類),表示是公共倉庫,讀許可權是完全放開的;與之相反的是私有倉庫 private 。

image

如上圖所示,設定完倉庫名稱和型別後,即可點選“Create repository”按鈕,從而建立一個倉庫。

image

如上圖所示,就是剛建立倉庫成功後,什麼專案內容都還沒有的樣子,但我們可以看到該遠端倉庫的 HTTPS 連結。

7.3、命令速查表

命令 作用
git remote -v 檢視已設定的所有遠端地址別名
git remote add 別名 遠端地址 為一個遠端地址設定別名
git push 別名 分支名 推送本地倉庫某分支的內容到遠端倉庫
git pull 遠端庫地址(別名) 遠端分支名 將遠端倉庫某分支的更新內容拉取到本地倉庫
git clone 遠端倉庫地址 將遠端倉庫克隆到本地

7.4、遠端倉庫的別名

7.4.1、建立一個本地庫

image

注意:本地倉庫名稱和遠端倉庫名稱,最好是相同的。

7.4.2、檢視遠端倉庫的別名列表

image

如上圖所示,別名列表為空,表示目前還沒為任何遠端倉庫設定別名。

git remote -v

7.4.3、設定遠端倉庫的別名

image

如上圖所示,為遠端倉庫地址 https://github.com/lb-liaojy/kfhs.git 設定了一個別名 kfhs

git remote add 別名 遠端地址

注意:遠端倉庫地址的別名,最好和遠端倉庫名稱相同。

7.4.4、確認剛設定的遠端倉庫別名

image

如上圖所示,一個別名會對應遠端倉庫地址的兩種型別,分別用於拉取(fetch)和推送(push)。

注意:每個本地倉庫都有自己的遠端倉庫別名列表,相互獨立,互不影響。

7.5、推送本地庫到遠端庫

7.5.1、在本地庫新增內容

image

image

如上圖所示,在本地庫新增了一個 plan.txt 檔案,其內容為“匡扶漢室”。

7.5.2、檢視憑據管理器

image

image

如上圖所示,目前還沒有 GitHub 賬號的相關憑據。

7.5.3、推送本地庫的master分支到遠端庫

image

如上圖所示,往遠端倉庫推送內容,需要登入具備相應許可權的 GitHub 賬號。

因為已在瀏覽器中登入了 GitHub 賬號,所以可以直接點選“Sign in with your browser”按鈕,跳轉到瀏覽器頁面進行授權。

image

如上圖所示,點選“Authorize git-ecosystem”按鈕,即可將瀏覽器中的 GitHub 賬號登入狀態,同步到 Windows 系統中。

image

如上圖所示,已成功推送本地庫的master分支到遠端庫。

7.5.4、確認憑據管理器

image

如上圖所示,Windows系統已記錄了 GitHub 的登入憑據,這樣以後就不需要再次授權,可以直接往遠端倉庫推送內容。

7.5.5、檢視遠端庫

image

如上圖所示,本地庫master分支的內容,已成功推送到遠端庫。

7.6、拉取遠端庫到本地庫

7.6.1、線上直接修改遠端庫的內容

image

如上圖所示,點選需要修改的檔案。

image

如上圖所示,開啟需要修改的檔案後,點選編輯。

image

如上圖所示,修改完檔案內容後,點選提交按鈕。

image

如上圖所示,在提交彈窗中,填寫提交描述後,點選提交按鈕。

image

如上圖所示,已成功線上直接修改遠端庫的內容。此時,遠端庫和本地庫的內容已不一致,因此本地庫需要從遠端庫中,拉取更新的內容。

7.6.2、將遠端庫的更新內容拉取到本地庫

image

如上圖所示,已成功將遠端倉庫master分支的更新內容拉取到本地倉庫。

git pull 遠端庫地址(別名) 遠端分支名

7.6.3、檢視拉取的更新內容

image

如上圖所示,本地庫的內容,與遠端庫的內容,已經同步了。

注意:pull(拉取)命令,會自動將遠端分支的更新內容,提交到本地庫;因此本地庫不用再執行 git add 和 git commit 命令。

7.7、克隆遠端庫到本地庫

7.7.1、刪除GitHub賬號的憑據

image

image

如上圖所示,刪除了 GitHub 賬號的憑據。這樣做的原因是,為了證明克隆遠端庫到本地庫,不需要許可權。

7.7.2、複製遠端庫地址

image

7.7.3、將遠端庫克隆到本地庫

image

如上圖所示,已成功將遠端庫克隆到本地。

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、克隆的三個效果

image

如上圖所示,克隆命令實際產生了三個效果:

  • 初始化本地倉庫:建立了和遠端倉庫同名的資料夾,該資料夾中還有用於版本控制的 .git 子資料夾。

  • 拉取內容:本例為 plan.txt 檔案。

  • 建立別名:自動為遠端倉庫地址建立了別名 origin 。

7.8、團隊內協作

7.8.1、修改本地庫檔案

image

如上圖所示,孔明克隆了劉備的遠端庫後,在本地庫對檔案內容做了修改。

7.8.2、推送本地庫的更新到遠端庫(非團隊成員)

image

如上圖所示,往遠端倉庫推送內容,需要登入具備相應許可權的 GitHub 賬號。

因為已在瀏覽器中登入了 GitHub 賬號,所以可以直接點選“Sign in with your browser”按鈕,跳轉到瀏覽器頁面進行授權。

注意:出於演示需要,瀏覽器現在登入的是孔明的賬號。

image

image

如上圖所示,點選“Authorize git-ecosystem”按鈕,即可將瀏覽器中的 GitHub 賬號登入狀態,同步到 Windows 系統中。

注意:出於演示需要,瀏覽器現在登入的是孔明的賬號。

image

如上圖所示,孔明往(劉備的)遠端庫推送本地庫的更新失敗,因為此時孔明還沒有往(劉備的)遠端庫的推送許可權。

7.8.3、邀請合作者加入團隊

image

如上圖所示,在該遠端庫的 Settings 的 Collaborations 中,點選“add people”按鈕,即可查詢想要邀請的合作者。

image

image

如上圖所示,透過搜尋孔明的 GitHub 賬號名稱,即可向其傳送合作邀請。

image

如上圖所示,向孔明傳送邀請後,還需等待其同意邀請。

7.8.4、同意加入團隊的邀請

image

如上圖所示,在孔明的 GitHub 信箱中,能看到劉備發來的邀請。

image

如上圖所示,孔明點選“Accept invitation”按鈕,即可加入劉備的團隊。

image

如上圖所示,加入劉備的團隊後,孔明便有了往劉備的遠端庫(kfhs)執行 push (推送)命令的許可權。

注意:劉備可以有多個遠端庫,各個遠端庫可以有不同的團隊成員。

7.8.5、推送本地庫的更新到遠端庫(是團隊成員)

image

如上圖所示,當孔明成功劉備遠端庫的團隊成員後,便可成功推送本地庫的更新到這個遠端庫。

7.8.6、檢視遠端庫

image

image

如上圖所示,孔明的本地庫更新,已成功推送到劉備的遠端庫。

注意:此時,劉備本地庫和遠端庫的內容已不一致,因此劉備本地庫需要從遠端庫中,拉取更新的內容。(具體操作見7.6節)

7.9、跨團隊協作

7.9.1、查詢遠端庫

image

如上圖所示,透過GitHub頂部的搜尋框輸入關鍵詞,即可查詢相關專案。(能精準匹配的關鍵詞格式:GitHub賬號名稱/遠端庫名稱)

注意:為演示需要,此時登入的GitHub賬號是周瑜的。

7.9.2、複製遠端庫

image

如上圖所示,在劉備的遠端庫中,點選“fork”按鈕,即可將該遠端庫複製一份到自己的 GitHub 賬號名下。

image

如上圖所示,還可以編輯複製到自己名下的遠端庫名。

注意:從已自動勾選的可選框可知,預設只複製主分支(master)。

image

如上圖所示,複製來的遠端庫,會顯示覆制的源頭。

7.9.3、對複製來的遠端庫進行修改

image

image

如上圖所示,周瑜成功對複製來的遠端庫內容做了修改更新;因為該遠端庫是自己名下的,所以不需要加入劉備的團隊,就能擁有寫許可權。

當然,這樣的修改,不會影響到劉備的遠端庫。

注意:線上直接修改遠端庫的詳細操作過程,可以參考 7.6.1 節。

7.9.4、周瑜傳送拉取請求(pr)

image

image

如上圖所示,建立拉取請求(pull request)時,可以對比兩個遠端庫分支的差異。

image

如上圖所示,傳送拉取請求時,會附帶拉取請求的標題(預設是提交資訊),還可以補充描述。

image

如上圖所示,傳送拉取請求成功。

7.9.5、劉備檢視拉取請求

image

如上圖所示,劉備看到了周瑜傳送的拉取請求。

image

如上圖所示,點選拉取請求的標題,檢視周瑜修改的內容。

image

如上圖所示,能看到這個拉取請求中,兩個遠端庫分支的差異對比。

7.9.6、在拉取請求中溝通

image

如上圖所示,劉備能在這個拉取請求中,向周瑜傳送訊息。

image

image

如上圖所示,周瑜看到劉備在這個拉取請求中的訊息後,也可以回訊息。

7.9.7、劉備合併拉取請求

image

如上圖所示,劉備稽核過周瑜的拉取請求後,覺得相關修改是有價值的,可以合併到自己的遠端庫中。

image

如上圖所示,合併拉取請求時,會有確認合併的提示。

image

如上圖所示,已成功合併。

image

如上圖所示,劉備的遠端庫中,有周瑜的提交資訊。

7.10、SSH免密登入

7.10.1、檢視遠端庫的SSH地址

image

如上圖所示,遠端庫地址除了HTTPS型別的之外,還有SSH型別。

如果使用HTTPS型別的就很簡單,基本不需要配置就可以使用,但是每次推送時,都需要用已登入GitHub賬號的瀏覽器授權(或輸入使用者名稱和密碼)。

SSH型別相比HTTPS型別的一個重要的優點是,只需要配置一次,就不用每次推送時,都重複需要用已登入GitHub賬號的瀏覽器授權(或輸入使用者名稱和密碼)。當然,前提是必須是該遠端庫的擁有者或合作者,且配置好了 SSH key (上圖顯示目前還沒配置好 SSH key )。

7.10.2、本地生成SSH金鑰

image

如上圖所示,先用 Git Bash 進入本地電腦的當前使用者的家目錄。

cd

image

如上圖所示,輸入生成金鑰的命令後,連續按回車即可。

ssh-keygen -t rsa -C GitHub賬號郵箱
  • ssh-keygen:生成SSH金鑰的命令。

  • -t:指定生成SSH金鑰的加密演算法,rsa 是著名的非對稱加密演算法。

  • -C(注意 C 是大寫的):用來指定標識郵箱。

注意:如果之前已經生成過SSH金鑰,可以執行以下命令刪除舊的
removed directory '.ssh'

7.10.3、檢視生成的SSH金鑰

image

如上圖所示,執行生成金鑰的命令後,會有一個“.ssh”的目錄,該目錄中有私鑰檔案“id_rsa”和公鑰檔案“id_rsa.pub”。

cd .ssh/
ll

image

如上圖所示,使用 cat 命令檢視公鑰檔案“id_rsa.pub”中的內容。

cat id_rsa.pub

7.10.4、在GitHub中新增公鑰

image

如上圖所示,點選 GitHub 賬號使用者頭像,在側彈窗中點選進入“Settings”。

image

如上圖所示,在“Settings”中,點選“SSH and GPG keys”,就可以看到“New SSH key”按鈕。

image

如上圖所示,將在本地生成的 SSH 公鑰複製到 GitHub ,併為其自定義一個標識名稱。

image

如上圖所示,已成功在 GitHub 中新增了一個本地電腦生成的公鑰。

這樣一來,以後在本地電腦,使用遠端倉庫的 SSH 地址執行 push (推送)命令的時候,就不需要登入了。

7.10.5、再次檢視遠端庫的SSH地址

image

如上圖所示,在 SSH 中已經沒有了警告彈窗,表明已配置好了 SSH key 。

7.10.6、刪除本地的GitHub登入憑據

image

如上圖所示,刪除了 GitHub 賬號的憑據。這樣做的原因是,為了證明 SSH 免密登入後已配置成功。

7.10.7、使用SSH地址拉取遠端庫

image

如上圖所示,此時劉備的本地庫與遠端庫不一致,遠端庫的更新還沒有同步到本地庫。

image

如上圖所示,第一次使用 SSH 地址,會有提示資訊,輸入“yes”回車即可。

image

如上圖所示,成功使用 SSH 地址(免密登入)拉取遠端庫的更新到本地庫。

7.10.8、使用SSH地址向遠端庫推送更新

image

如上圖所示,先在本地庫更新內容。

image

如上圖所示,成功使用 SSH 地址(免密登入)向遠端庫推送了本地庫的更新。

image

如上圖所示,遠端庫確實有了本地庫的更新。

相關文章