作者:contr4l_
Git 以及 github 是目前可以說是流行最廣的代碼管理方案(類似的方案有時代的眼淚之 SVN、同樣基於 git 的 gitlab、gitee 等等),在本教程中,將手把手教讀者完成 git 的安裝、github 倉庫的拉取、代碼的修改及提交等事務,為擁抱開源打下基礎。
Git 的安裝#
git 作為一個命令行程序,提供了一系列代碼下載、提交、分支管理的功能,其下載地址為:Git Download,對於 Windows,通常選擇Standalone Installer:64-bit Setup即可(如果是非常老舊的 32bit 系統,也可選擇 32-bit Setup)。
此時按下Win+R
,輸入powershell
並運行,在窗口中輸入git -v
,應當出現如下字樣:
PS C:\Users\ctrl> git -v
git version 2.40.0.windows.1
- 版本信息可能根據安裝的 git 版本有所變化
- 如果提示報錯,需要考慮 git 安裝過程是否出現問題或是是否將 git.exe 所在的路徑正確添加進了系統的環境變量
Github 的註冊、添加 SSH Key#
首先需要註冊 github 賬號,在此請自行解決與 github/google 的網絡連接問題(一般情況下 github 直連是順暢的,但在某些教育網系統中毛病頗多,與地區網絡服務供應商有關)。
現在的註冊頁面真是酷炫,谷歌是偉大的公司 233
現在你可以在 github 登錄自己的賬號。
在我們進行git clone
之前,需要做一項很重要的事情,那就是將本機的SSH key
放進自己的github account
,操作步驟如下:
# 1. 在powershell中,輸入ssh-keygen.exe,並一路回車
# 此處我增加了-f選項是為了不覆蓋已生成的公鑰
PS C:\Users\ctrl> ssh-keygen.exe -f github
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in github
Your public key has been saved in github.pub
The key fingerprint is:
SHA256:JJ+NVRVXLj2aWTGQj+5Jx6edEnpQG146uqvMmbR9uhI ctrl@CtrlPC
The key's randomart image is:
+---[RSA 3072]----+
| .o=++|
| . . +o|
| . . . +oo|
| + = +=+.|
| S . ++* |
| E . O o.|
| .. * =oo|
| +.=o *...|
| Bo*B . |
+----[SHA256]-----+
# 2. 繼續輸入cat ~/.ssh/id_rsa.pub
PS C:\Users\ctrl> cat ~/.ssh/id_rsa.pub
ssh-rsa ****** ctrl@CtrlPC
# 3. 將屏幕上ssh-rsa開頭的一長串字符串複製下來
# 4. 在github頁面,依次點擊右上角自己頭像-Settings-SSH and GPG keys-New SSH key
# 5. 將剛才複製的一長串內容粘貼進Key的文本框,並點擊Add SSH key,Title可以留空
Github 倉庫的拉取#
現在你需要訪問我們的wiki 所在的 repo。
首先你需要將這個倉庫fork
到你的倉庫內,這是能夠進行修改並提交的基礎。
注意選項
clone main branch only
一定要取消勾選!因為我們是基於 gh-pages 分支進行開發的。
現在你可以看到contr4l.github.io
已經位於你的名下了,如下圖所示。
接下來我們進行代碼拉取,首先找到 SSH 的代碼拉取地址,如下圖所示,然後在powershell
中輸入git clone {剛才你複製的以.git結尾的地址}
。
PS C:\Users\ctrl> git clone [email protected]:fakeContr4l/contr4l.github.io.git
Cloning into 'contr4l.github.io'...
remote: Enumerating objects: 242, done.
remote: Counting objects: 100% (242/242), done.
remote: Compressing objects: 100% (145/145), done.
remote: Total 242 (delta 69), reused 202 (delta 35), pack-reused 0Receiving objects: 67% (163/242), 1.63 MiB | 39.00 Ki
Receiving objects: 100% (242/242), 1.69 MiB | 45.00 KiB/s, done.
Resolving deltas: 100% (69/69), done.
此時你當前目錄下會多出一個contr4l.github.io
為名的文件夾,就是我們的工作目錄。
切換分支並進行編輯、提交#
首先我們需要將默認的 main 分支切換到我們的工作分支gh-pages
cd contr4l.github.io
git checkout gh-pages
# 提示應當如下:
# Switched to branch 'gh-pages'
# Your branch is up to date with 'origin/gh-pages'.
然後我們要建立起自己的 repo 和原始 repo 的追蹤關係,並且保持本地代碼是最新的
# 增加一個名為upstream的上游git
git remote add upstream [email protected]:contr4l/contr4l.github.io.git
# 將上游的內容獲取下來
git fetch upstream
# remote: Enumerating objects: 101, done.
# remote: Counting objects: 100% (101/101), done.
# remote: Compressing objects: 100% (26/26), done.
# remote: Total 63 (delta 8), reused 63 (delta 8), pack-reused 0
# Unpacking objects: 100% (63/63), 857.91 KiB | 53.00 KiB/s, done.
# From github.com:contr4l/contr4l.github.io
# * [new branch] gh-pages -> upstream/gh-pages
# * [new branch] main -> upstream/main
# 將上游最新的變更同步到本地
git pull upstream gh-pages
# From github.com:contr4l/contr4l.github.io
# * branch gh-pages -> FETCH_HEAD
# Updating e820fac..b08386a
# Fast-forward
# ...
注意每次在進行修改前,都要執行
git pull upstream gh-pages
的操作,以免本地的修改與遠端發生衝突。
接下來你可以在本地編輯器中,對這個 repo 進行任意修改,通過 docsify 的實時預覽確保修改符合自己的預期。
最後需要將修改提交到自己的 repo 上,操作如下:
# 首先確保自己在contr4l.github.io的根目錄下
pwd
# Path
# ----
# C:\Users\ctrl\contr4l.github.io
# 然後將所有修改加入暫存區
git add .
# 執行提交,並附加上提交的信息(commit message
git commit -m "{雙引號內部填寫修改的備註,如translate armor page}"
# 執行推送,目標是自己的repo的gh-pages分支
git push origin gh-pages
# PS C:\Users\ctrl\contr4l.github.io> git push
# Enumerating objects: 5, done.
# Counting objects: 100% (5/5), done.
# Delta compression using up to 12 threads
# Compressing objects: 100% (3/3), done.
# Writing objects: 100% (3/3), 381 bytes | 381.00 KiB/s, done.
# Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
# remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
# To github.com:fakeContr4l/contr4l.github.io.git
# e820fac..7ce3e7d gh-pages -> gh-pages
最後向上游分支提交pull request
,申請將自己的修改合入發布分支,此處要注意幾點:
- 原始分支和目標分支都要選擇 gh-pages(如果你本地在其他分支進行了操作,根據實際情況確定)
- 一定是從自己的倉庫創建
pull request
而非 contr4l 的倉庫
接下來你可以看到在 contr4l 的倉庫的pull request
列表出現了你的新的 PR 申請,如下圖所示
此時一是要檢查下方的修改內容是否和自己修改的一致
二是要確認
no conflict
,存在衝突的原因可能是你的修改和已經存在的某個修改重疊了,需要在本地解決衝突再進行提交
VsCode 解決衝突只需要選擇
use your commit
oruse remote commit
即可,非常容易