GitHub 的 PAT 設定

GitHub 的 PAT 設定

在 Github 的朋友們應該有發現,最近已經不能直接推送更新到Github的儲存庫 (repository)。原因是從八月十三號 Github 開始禁止沒有個人訪問令牌 (Personal Access Token, a.k.a. PAT) 的帳號推送更新到 Github ,如果像以前一樣執行 $git push origin master 會得到圖一的結果。Github官方有教怎麼在下載 repository 的同時設定 PAT ,但是要怎麼修改已經載好的 repository 的 PAT 呢?

圖一:無法從本地端直接推送到Github

生成 PAT

請參考 Github 官方的做法生成一串 PAT,PAT 不可外流,他就像密碼一樣,擁有它的人就擁有了相關的權限。生成後看起來像圖二。

圖二:一個帳號所擁有的PAT以列表呈現

每一個 PAT 只會生成一次,請使用者一定要收好。如果忘記或是外流了,可以選取該 PAT 的名字後執行「重新生成(Regenerate token) 」。這樣一來系統會生成一個新的 PAT 取代掉舊的,並且有用到這個 PAT 的所有 repository 也都需要重新設定存取權。

新增 PAT 到遠端 (remote)

需要新增PAT的理由可能是原本本地端的 repository 沒有設定 PAT ,或是PAT失效了。無論如何,我們可以透過「重設遠端」來新增或修改PAT。下面我以我的 repository 以及預設的遠端 origin 做示範。當然,我的 PAT 也是保密的,各位要用自己的 repository 及 PAT 喔!開始之前,先把 repository 下載下來,程式碼如下,效果如圖三:

# 從遠端下載repository
$ git clone https://github.com/jacob975/my_machine_learning_handscript
圖三:下載repository到本地端

接下來,我們隨便新增文件到本地端的 repository ,並且嘗試推送到遠端。執行的程式碼如下、效果如圖四:

# 新增文件
$ echo "Whether PAT is working?" > test_pat.txt

# 確認狀態
$ git status

# 新增 "test_pat.txt" 到 git
$ git add test_pat.txt
$ git commit -m "Add a file for test PAT"

# 推送到遠端
$ git push origin main
圖四:新增文件到本地端的repository,並且嘗試推送更新到遠端但失敗

效果如圖四所示,推送失敗了,因為我們還沒有設定PAT。這應該也是很多讀者可能遇到的情況,接下來我會移除遠端 origin ,然後新增一個有PAT的遠端。程式碼如下、效果如圖五:

# 移除名為 "origin" 的遠端
$ git remote remove origin 

# 新增名為 "origin" 的遠端
$ git remote add origin https://<your_PAT>@github.com/jacob975/my_machine_learning_handscript 

$ git push origin main # 應該就能推送成功了!
圖五:移除並新增含有PAT的遠端後,推送更新成功

小結

關於修改 Github PAT,我在網路上還沒找到中文的做法所以自己寫了一個(英文的已經有很多了)。我希望這篇文章可以幫到把 Github 當作 code 備份伺服器的人。我的朋友好像有滿多會這麼做的。平常已經很熟悉 git 或是有在用 git在協作開發的人就可以略過這一篇了。


所有文章分類

訂閱我吧

不再錯過每一篇新文章

*

Yi-Lung Chiu