June 28, 2023

Viiisit [GitHub] - `git push` error fixed!

#git#github

Git 與 GitHub 是不同的!

Git 為一項工具,下載至自己的裝置上操作檔案間的版本控制、記載連續性的歷史紀錄;

GitHub 則是一個網站、平台,提供一個遠端儲存庫 (Remote Repository),
讓本地儲存庫(Local Repository)上傳至 GitHub。在 GitHub 我們能分享自己的原始碼、能參考別人做的原始碼,並且也能進行線上合作、討論專案。


要如何將自己的 repository 上傳到 GitHub 上呢?

首先到 GitHub 網站上註冊帳號 ,並前往 repository 建立新的儲存庫。
而上傳的方式有很多種,可以用圖形介面工具 — GUI (Graphical User Interface) 上傳,像是 VScode 或者 SourceTree,都有畫面呈現每個 commit, branch,相較直接使用 Terminal 簡單許多!
但,GUI 的指令操作與 Terminal 是一樣的,所以我們還是必須要先了解每個指令的意義,才能更有效使用。


不要害怕指令,更不要害怕錯,錯誤訊息就在眼前!

把之前在 Viiisit Terminal 那篇所講過的話,再次拿出來講一次,因為不熟悉而發生多次的錯誤訊息真的是見怪不怪,幾乎每次都在祈禱一次性通過,有時候就是會事與願違:)

分享一下剛開始我使用 git push 將本地儲存庫上傳至遠端時發生的錯誤,當時真的試了又試,排錯在排錯,要成為優秀的工程師,這樣不停地分析錯誤並試圖解決是必要的。

(默默在心中立志只許成功不許失敗!)


Error Fixed Process

git push 可以把本機端儲存庫的相關檔案,上傳到遠端,但首次嘗試總是不會跟自己預期的那樣順利…

當時我在自己的 GitHub 上建立新的 Repository,依循引導畫面在 Terminal 上給指令進行,因為我是要將本地端已有的儲存庫上傳,所以我使用 push an existing repository from the command line

早在之前我很多餘的手動刪除在 GitHub 的一個 Repository ,當時也是遵照給的指令操作,造成我後面要重新 git push 時,就發生 fatal: remote origin already exisits (遠程分支 origin 已存在,重複建立而報錯)。

因此,要先移除那個分支(把 origin 這個貼紙撕掉)

使用 git remote rm origin

就可以排除上述問題,接著再依照 GitHub 給的指令去執行就可以囉!

在真正 git push 之前,GitHub 會要求填上 username 跟 password。
username 填入當初申請時的使用者名稱即可,
但!password 要去拿取一個名為 personal access token 的編碼

如果用自己的登入密碼,肯定會看到這樣的訊息:

1
2
3
remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/viiining/PracticeJS.git/'

So… How to create personal access token?

1
2
3
4
5
點擊右上角的頭貼 -> 點進 settings -> 左側選單最後有個 Developer settings ->

Personal access tokens -> Tokens (classic) > Generate new token (classic) ->

Get your personal token and paste to terminal for requesting password.

因為一些授權的關係,GitHub 不再使用個人的登入密碼作為 git push 時使用,如果沒有自己試過,根本不知道還有這樣的環節!

把遇到的錯誤整理完,下次再遇到時,就能毫不猶豫地排除這些錯誤!

之後陸陸續續會整理出更多排錯的文章,畢竟真的是很常遇到突發狀況,
既然遇到就要一一破關,只許成功不許失敗!(抱拳)