我們要做什麼?
先複習一下,我們到底要拿 Git 來做什麼?
我們的目的是要把我們要建立的網站(之後會帶大家建立)存成存檔點,然後上傳到雲端存檔庫,這樣我們的網站就可以部署到網路上!
graph LR
A[原始檔案] -->|存檔| B[存檔點]
B -->|上傳| C[雲端存檔庫]
C -->|部署| D[靜態網站]
GitHub 是全球最大的 男性交友網站 原始碼代管服務平台,也就是可以上傳存檔的雲端存檔庫。
在這篇文章,我會以 GitHub 來示範,在雲端存檔庫也建立一個存檔槽,來把 上一篇文章 存好的存檔點上傳上去!
註冊 GitHub 帳號
到 GitHub 的 網站首頁,點右上角的 Sign up 就可以註冊。
因為我已經有帳號了,就不再註冊一個給大家看,應該沒有人會卡在這邊吧 XD
建立雲端存檔庫
一樣回到首頁,在左邊可以找到這個「New」,按下去就可以開始建立。

在這邊有一些選項要填,這邊給大家一點指引:

Repository name:隨意,每個帳號底下的所有 repo 彼此的名稱不能重覆
Description:隨意,不填也可以
Choose visibility:如果不想要自己的原始檔被看到、或被拿去用,可以選 Private
Start with a template:No template,你也沒得選
Add README:務必選 Off,不然就會跟我們已經有的存檔打架
Add .gitignore:務必選 No .gitignore,理由和上面一樣
Add license:務必選 No license,同上
然後按下面的 Create repository 就可以建立了~
把存檔上傳到 GitHub
如果都沒有填錯的話,應該就會看到如何上傳到空 repo 的簡易教學:

我們需要的是下面的「push an existing repository」,因為我們已經在自己的電腦有存檔槽了。
但先等等!
如果你就直接照著這個做的話,你很有可能會傳不上去:
1
2
3
4
5
6
7
|
git remote add origin https://github.com/giveanornot/my-blog.git
git branch -M main
git push -u origin main
# Username for 'https://github.com': giveanornot
# Password for 'https://giveanornot@github.com':
# remote: Invalid username or token. Password authentication is not supported for Git operations.
# fatal: Authentication failed for 'https://github.com/giveanornot/my-blog.git/'
|
你會一直收到 password authentication is not supported for Git operations 的錯誤,那是因為 GitHub 從 2021/08/21 開始就不再接受使用密碼驗證。
設定 SSH key
不能用密碼驗證的話,那我們也只能用另一種方法了,我們這邊選擇用 SSH key。
雖然會麻煩一點,但好消息是只要設定一次,之後就不用再登入,可以直接上傳!
SSH key 是什麼?
SSH key 就像是撕成兩半的紙、或是騎縫章,一半自己留著,然把一半給對方。
如果遇到需要證明我自己就是那個人的時候,就把這兩半拿出來對一下,可以配在一起就表示我真的是那個人。
而這就是所謂 公鑰、私鑰 的概念。我們會把其中的公鑰給 GitHub,私鑰自己留著登入的時候用。
產生 SSH key
我們要再回到 terminal 裡面了,如果你是從之前的文章一路跟過來的話,我建議另外開一個 terminal,比較不會搞混。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
mkdir ~/.ssh # 在 ~(home) 建立一個叫做 .ssh 的資料夾,如果已經有了就不用再建了
cd ~/.ssh # 進入剛剛建的資料夾
ssh-keygen -t ed25519 -C "jn@giveanornot.com" # 用 ssh-keygen 來產生 SSH key,-C 後面的 email 記的改成自己的!
# 接著一路 enter 下去就可以
# Generating public/private ed25519 key pair.
# Enter file in which to save the key (/home/giveanornot/.ssh/id_ed25519):
# Enter passphrase for "/home/giveanornot/.ssh/id_ed25519" (empty for no passphrase):
# Enter same passphrase again:
# Your identification has been saved in /home/giveanornot/.ssh/id_ed25519
# Your public key has been saved in /home/giveanornot/.ssh/id_ed25519.pub
# The key fingerprint is:
# SHA256:hc4RMApnWtTvUMyFZaYFWcISxZKRWcOPwa7b+IZ8pVY jn@giveanornot.com
# The key's randomart image is:
# +--[ED25519 256]--+
# | ..=.=^BBB |
# | * .B.%X |
# | . . *++. |
# | .o+o. |
# | +S |
# | . . E |
# | . = + |
# | = * |
# | =. |
# +----[SHA256]-----+
ls # 用 ls 看一下 key 有沒有產出來了
# id_ed25519.pub id_ed25519 # 應該會有兩個檔案
cat id_ed25519.pub # 用 cat 看一下公鑰長什麼樣子(pub = public = 公鑰)
# ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPS1y4G0uwJvtbB4WWNMOeY2dHUGbSlwmwElQFgw7l9Q jn@giveanornot.com
|
私鑰請務必要保管好!!!
把公鑰設定到 GitHub
首先我們先到 右上角頭貼 => Settings => SSH and GPG keys => New SSH key



然後把公鑰填進去:

Title:隨意,可以讓你辨認這是哪一台電腦產出來的就好了
Key type:選Authenticaiton Key
Key:把上面用 cat 看的公鑰內容貼進來
然後按下面的 Add SSH key 就可以了。
上傳存檔點
設定好 SSH key 之後,我們就可以回來上傳存檔點了。我們回到我們最一開始建的雲端存檔庫(repo)。
因為我們要用 SSH key 的方式來驗證,所以記得選到 SSH:

然後我們就可以依照下面的說明去上傳了~
1
2
3
4
5
6
7
8
9
10
|
git remote add origin git@github.com:giveanornot/my-blog.git # 連接在 GitHub 的雲端存檔庫,並把它叫做「origin」(叫做 origin 只是個慣例)
git branch -M main # 把目前的分支改名叫做「main」
git push -u origin main # 把 main 這個分支的存檔點都上傳(推)到 origin
# Enumerating objects: 3, done.
# Counting objects: 100% (3/3), done.
# Writing objects: 100% (3/3), 210 bytes | 70.00 KiB/s, done.
# Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
# To github.com:giveanornot/my-blog.git
# * [new branch] main -> main
# branch 'main' set up to track 'origin/main'.
|
註:分支的概念比較進階,在自己寫部落格的時候用到的機會不大,我們也只會一直待在「main」這個分支,所以這邊就不深入解釋。
這樣就可以看到我們的檔案就被傳上來了:

上傳新的存檔點
這篇文章前面說的,是第一次什麼都還沒設定的時候的上傳的流程。如果之後有新的存檔點,而且要上傳的話,會像是這個樣子:
首先我們先像 上一篇文章 一樣,再多存一個檔:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
touch another-post.txt # 用 touch 來新增另一篇文章,一樣可以用記事本,都可以
ls # 用 ls 看一下目前有哪些檔案
# another-post.txt post.txt
git add another-post.txt # 把「another-post.txt」也納入接下來的這次要存檔
git status # 看一下現在存檔槽的狀態
# On branch main
# Your branch is up to date with 'origin/main'.
#
# Changes to be committed:
# (use "git restore --staged <file>..." to unstage)
# new file: another-post.txt
# 看起來「another-post.txt」已經被納入,可以正式存檔了
git commit -m "add another post" # 正式寫入存檔點
# [main 38d7d59] add another post
# 1 file changed, 0 insertions(+), 0 deletions(-)
# create mode 100644 another-post.txt
|
存檔點寫完之後,接著就可以把這個新的存檔點上傳(推)上去了:
1
2
3
4
5
6
7
8
9
|
sh-5.3$ git push # 就是用「git」來「push」
# Enumerating objects: 3, done.
# Counting objects: 100% (3/3), done.
# Delta compression using up to 16 threads
# Compressing objects: 100% (2/2), done.
# Writing objects: 100% (2/2), 249 bytes | 249.00 KiB/s, done.
# Total 2 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
# To github.com:giveanornot/my-blog.git
# 0f84fa4..38d7d59 main -> main
|
在以後,就只要這著這幾個步驟,就可以把新的檔案(或是改過的)存檔、上傳到去雲端資料庫啦~~
結語
就這樣,我們終於知道怎麼把存檔點傳到雲端資料庫了。之後在把部落格寫好,真正要用到 Git 的時候,就不會手忙腳亂的了!
Git 和 GitHub 就大概先到這裡告一個段落,接下來就是真正進入建立部落格的環節了!
Reference
與你的連結,是我寫部落格的動力
喜歡這篇文章的話,歡迎 在下方留言 或是 寄 Email 回饋給我!
也可以去 誰來我家 簽個到,或是去 看看其他文章 ~~