原文地址:學習 Git 玩轉 GitHub
部落格地址:www.extlight.com
一、基本瞭解
1.1 什麼是版本控制系統
版本控制系統是一種記錄一個或若干個檔案內容變化,以便將來查閱特定版本修訂情況的系統。
1.2 什麼是 Git
Git是一個免費、開源的版本控制軟體
1.3 什麼是 Github
Github是全球最大的社交程式設計及程式碼託管網站
1.4 Git 和 GitHub 的關係
- Git是版本控制軟體
- Github是專案程式碼託管的平臺,藉助git來管理專案程式碼
1.5 什麼要學習 GitHub
- 學習優秀的開源專案
- 關注行業前輩瞭解最新的行業動態
二、使用 GitHub
2.1 目的
藉助 GitHub 託管專案程式碼
2.2 GitHub 中的基本概念
2.2.1 Repository(倉庫)
倉庫用來存放專案程式碼,每個專案對應一個倉庫,多個開源專案則有多個倉庫
2.2.2 Watch(關注)
關注專案,當專案更新可以接收到通知
2.2.3 Star(收藏)
收藏專案,方便下次檢視
2.2.4 Fork(複製克隆專案)
複製克隆別人的專案到自己的 Github 倉庫中,獨立存在,任何操作都不會對原先的倉庫造成影響。
2.2.5 Issue(問題討論)
發現程式碼 bug 時,發起訊息與作者討論
2.2.6 Pull Request(發起請求)
當 fork 倉庫,修改倉庫的 bug 或 新增新功能後,想同步到原先的倉庫時,發起請求給原倉庫作者,讓其對程式碼稽核與合併。
2.3 註冊 GitHub 賬號
第一步:登陸官網 GitHub官網,如下圖:
第二步:點選首頁右上角的 "Sign up",進入如下頁面:
填寫好資訊,點選 "Create an account",來到如下頁面:
GitHub已經幫我們設定好預設選項,我們只管點選左下角綠色按鈕即可。
當看到下邊的介面時,我們就註冊好賬號了:
2.4 建立倉庫/建立新專案
點選上圖 "Start a project" 按鈕建立專案(倉庫)。但是,由於我們剛註冊好賬號,並沒有對郵件地址進行合法校驗。所以會出現如下介面:
點選 紅色框住的連結,GitHub 會跳轉頁面且重新傳送一封郵件讓我們進行對郵箱地址的校驗。如圖:
筆者使用的是 qq 郵箱,點選右下角提示進入到 qq 郵箱管理介面,如圖:
點選 "Verify email address" 連線進行校驗,瀏覽器會開啟新標籤提示郵箱地址校驗成功。
此時,我們點選 "Start a project" 就能真正建立專案了。此時,我們會來到如下介面:
填寫好基本資訊,點選 "Create a repository",來到倉庫管理介面:
根據圖中的標註,我們可以根據自己的需求管理倉庫。
2.5 開源專案貢獻流程
2.5.1 新建Issue
提交使用問題、建議或者想法
2.5.2 Pull Request
- fork 專案
- 修改自己倉庫的專案程式碼
- 新建 pull request
- 等待作者操作稽核
三、使用 Git
3.1 目的
通過 Git 管理 GitHub 託管專案程式碼
3.2 下載安裝
登陸 www.git-scm.com/download/wi… 下載
安裝過程傻瓜化方式(在選擇安裝時,選擇 Git Bash 和 Git GUI ,其餘預設選項即可),步驟省略。
3.3 Git 工作原理
對於任何一個檔案,在 Git 內都只有三種狀態:已提交(committed),已修改(modified)和已暫存(staged)。已提交表示該檔案已經被安全地儲存在本地資料庫中了;已修改表示修改了某個檔案,但還沒有提交儲存;已暫存表示把已修改的檔案放在下次提交時要儲存的清單中。
由此我們看到 Git 管理專案時,檔案流轉的三個工作區域:Git 的工作目錄,暫存區域,以及本地倉庫。
每個專案都有一個 Git 目錄(如果 git clone 出來的話,就是其中 .git 的目錄)。它是 Git 用來儲存後設資料和物件資料庫的地方。該目錄非常重要,每次克隆映象倉庫的時候,實際拷貝的就是這個目錄裡面的資料。
從專案中取出某個版本的所有檔案和目錄,用以開始後續工作的叫做工作目錄。這些檔案實際上都是從 Git 目錄中的壓縮物件資料庫中提取出來的,接下來就可以在工作目錄中對這些檔案進行編輯。
所謂的暫存區域只不過是個簡單的檔案,一般都放在 Git 目錄中。有時候人們會把這個檔案叫做索引檔案,不過標準說法還是叫暫存區域。
基本的 Git 工作流程如下:
- 在工作目錄中修改某些檔案
- 對修改後的檔案進行快照,然後儲存到暫存區域
- 提交更新,將儲存在暫存區域的檔案快照永久轉儲到 Git 目錄中。
3.4 Git 基本命令
3.4.1 git init
初始化工作目錄,在當前目錄下會建立一個名為 .git 的隱藏資料夾。
3.4.2 git add
建立或編輯檔案後,執行該命令,將檔案新增到暫存區
3.4.3 git commit
將暫存區的檔案推送到倉庫中
3.4.4 git status
列出當前目錄所有還沒有被 Git 管理的檔案和被 Git 管理且被修改但還未提交(git commit)的檔案
3.4.5 git fetch
檢測遠端倉庫所有分支
3.4.6 git checkout
切換分支
3.4.7 git branch
檢視當前所在分支
3.4.8 git rm
刪除倉庫中的檔案
3.4.9 git clone
克隆遠端倉庫
3.4.10 git push
同步本地倉庫到遠端倉庫
3.5 Git 管理遠端倉庫
Git 連線和管理 GitHub 上的檔案,為了安全性,需要設定公鑰。
之前的步驟我們安裝了 Git,開啟 Git 安裝目錄下的 Git Bash ,鍵入
ssh-keygen -t rsa -C "GitHub郵箱地址"複製程式碼
命令執行後會提示輸入資訊,我們不用填寫,直接回車。最終會在系統 "C:/Users/使用者名稱/.ssh/" 目錄中生成 rsa 和 rsa.pub 檔案。
開啟 rsa.pub 檔案複製裡邊的所有內容。
回到 GitHub 中,按照如下圖操作:
最後我們進行測試,在 Git Bash 中鍵入:
ssh -T git@github.com複製程式碼
如果出現 "Hi xxx! You've successfully authenticated" 字樣,說明我們配置成功了。
下邊我們模擬場景運用 Git 命令將檔案提交到 GitHub 的倉庫中。
場景一:非 clone 方式
該場景下,我們沒有對遠端倉庫進行關聯,需要手動初始化 .git 資料夾
在 "E:\demo\git\test1"(自定義) 中,使用 Git Bash 或 CMD 鍵入:
git init
echo "hello world" > test.txt
git add .
git status
git commit -m "first commit"
#新增需要連線的遠端倉庫地址(關聯遠端倉庫)
git remote add origin git@github.com:bluesky960/test.git
git fetch
# 切換到 master 分支
git checkout master
git branch
git push origin master複製程式碼
此時,在 Github 的 test 倉庫中會多出 test.txt 檔案。
場景二:clone 方式
在 "E:\demo\git\test2"(自定義) 中,使用 Git Bash 或 CMD 鍵入:
# 執行 clone 操作會在當前目錄中建立 .git 資料夾,關聯遠端倉庫
git clone git@github.com:bluesky960/test.git
cd test
echo "clone hello world" > test2.txt
git add .
git commit -m "add file"
git push複製程式碼
此時,在 Github 的 test 倉庫中會多出 test2.txt 檔案。
為了防止每次同步檔案都需要輸入賬號和密碼,我們需要進特殊配置
開啟 Git Bash 視窗,鍵入:
git config --global user.name "GitHub使用者名稱"
git config --global user.email "GitHub郵箱地址"複製程式碼
踩坑提醒
在執行 "git remote add origin" 命令時,後邊跟著是 SSH 型別的倉庫地址,否則,在每次 git push 時都要輸入賬號和密碼!