contr4l_

YoLo

既然人只会活一次,那就没什么好焦虑的。

Git及Github基本功能介紹

作者: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
  1. 版本信息可能根據安裝的 git 版本有所變化
  2. 如果提示報錯,需要考慮 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,申請將自己的修改合入發布分支,此處要注意幾點:

  1. 原始分支和目標分支都要選擇 gh-pages(如果你本地在其他分支進行了操作,根據實際情況確定)
  2. 一定是從自己的倉庫創建pull request而非 contr4l 的倉庫

接下來你可以看到在 contr4l 的倉庫的pull request列表出現了你的新的 PR 申請,如下圖所示

此時一是要檢查下方的修改內容是否和自己修改的一致

二是要確認no conflict,存在衝突的原因可能是你的修改和已經存在的某個修改重疊了,需要在本地解決衝突再進行提交

VsCode 解決衝突只需要選擇use your commit or use remote commit即可,非常容易

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。