更改 Windows Git 帳號設定

在 Windows 命令列中切換 Git 帳號,主要涉及修改電腦存儲的登入憑證以及 Git 軟體的設定。這可以分為兩個部分:更新 Windows 的憑證管理員,以及更改 Git 的使用者名稱與信箱。

首先,你需要清除電腦中舊的帳號資訊。請點擊開始功能表並搜尋憑證管理員,進入後選擇 Windows 憑證。在一般憑證清單中找到 git:https://github.com (或其他伺服器位址) 的項目,點擊展開並選擇移除。這樣當你下次執行 push 或 pull 指令時,系統就會彈出視窗要求你輸入新帳號的帳密。

接著,你必須更新 Git 內部的身分標籤。這是為了確保你的 commit 紀錄顯示正確的作者。你可以使用以下指令:

git config --global user.name "你的新名稱"
git config --global user.email "你的新信箱"

如果你只想在當前工作的專案中使用特定帳號,可以把上述指令中的 –global 去掉。這樣設定只會套用到目前的資料夾,不會影響到你電腦上的其他專案。

如果你是使用 SSH 金鑰連線而非帳號密碼,則需要產生一組新的金鑰並將公鑰上傳到 Git 伺服器,同時修改使用者目錄下 .ssh 內的 config 檔案來管理多個金鑰。


關於 WSL

在 WSL 環境中操作 Git 帳號,邏輯與 Windows 原生環境略有不同,因為 WSL 是一個獨立的 Linux 子系統,但通常我們會希望它能共用 Windows 的登入憑證,避免重複輸入密碼。

處理憑證與登入

如果你的 WSL 尚未設定憑證記憶功能,建議直接呼叫 Windows 端的憑證管理員。這能讓你在 WSL 內 push 程式碼時,自動調用 Windows 的登入資訊。請在 WSL 終端機執行:

git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/bin/git-credential-manager.exe"

執行後,當你下次需要驗證身分時,Windows 會跳出圖形化登入視窗。如果你想直接清除舊的登入紀錄,仍需回到 Windows 的憑證管理員中刪除對應的 git 項目。

更改使用者身分

不論是在 Windows 還是 WSL,Git 的作者資訊是跟隨設定檔的。你可以透過以下指令檢查目前的設定:

git config --list

若要更換全域的帳號資訊,請執行:

git config --global user.name "你的新名稱"
git config --global user.email "你的新信箱"

這些設定會儲存在你的家目錄下的 .gitconfig 檔案中。如果你在特定專案需要切換到公司或私人帳號,請進入該專案資料夾後,去掉 –global 參數重新執行上述指令,這樣設定就會優先套用到該專案。

SSH 金鑰管理

如果你偏好使用 SSH 連線,WSL 的金鑰通常存放於 ~/.ssh 目錄下。你可以透過 ssh-keygen 產生新金鑰,並將 id_rsa.pub 的內容貼到 GitHub 或 GitLab 的設定頁面。

由於 WSL 與 Windows 的檔案系統是分開的,建議不要直接軟連結 Windows 的 .ssh 資料夾到 WSL,以免因為權限過大(Linux 要求私鑰權限必須是 600)導致連線失敗。


關於 Git Bash

Git Bash 是在 Windows 上模擬 Linux 環境的終端機,它的操作邏輯介於 Windows 命令提示字元與 WSL 之間。在 Git Bash 中切換帳號,最有效的方法是處理憑證管理員與設定檔。

更新全域使用者資訊

在 Git Bash 中,你同樣需要確保 commit 的作者資訊正確。請執行以下指令來修改全域設定:

git config --global user.name "新使用者名稱"
git config --global user.email "新使用者信箱"

如果你只想針對目前所在的資料夾(專案)更改帳號,請去掉 –global 參數。這會將設定寫入該專案目錄下的 .git/config 檔案中,優先權高於全域設定。

處理自動登入憑證

Git Bash 預設會調用 Windows 的 Git Credential Manager (GCM) 來處理密碼。如果你發現切換了 user.name 但 push 時仍然使用舊帳號登入,請依照以下步驟處理:

  1. 清除舊憑證:最快的方式是回到 Windows 搜尋憑證管理員,移除 git:https://github.com 相關的項目。
  2. 重新觸發登入:在 Git Bash 執行 git push,此時會彈出 Windows 的圖形化登入視窗,讓你輸入新帳號的帳密或使用瀏覽器授權。

如果你希望檢查目前 Git Bash 使用哪一個憑證小幫手,可以輸入:

git config --global credential.helper

通常輸出的結果會是 manager 或 manager-core。

使用 SSH 切換多帳號

如果你偏好使用 SSH 連結,Git Bash 會讀取你 Windows 使用者目錄下 .ssh 資料夾內的設定。

你可以產生一組新的金鑰:

ssh-keygen -t ed25519 -C "你的新信箱"

並在 .ssh/config 檔案中設定多個 Host 區段,這樣你就能根據不同的 Host 名稱自動切換不同的私鑰,達成多帳號共存的需求。


SSH config 的設定範例,讓你同時管理公司與私人的 Git 帳號

若要透過 SSH Config 同時管理公司與私人等多個 Git 帳號,而不必每次手動切換憑證,可以參考以下在 Git Bash 或 WSL 中的設定步驟。

產生不同的 SSH 金鑰

首先,為不同的帳號產生專用的金鑰檔案,避免檔名衝突。請在終端機執行:

ssh-keygen -t ed25519 -C "[email protected]" -f ~/.ssh/id_rsa_work
ssh-keygen -t ed25519 -C "[email protected]" -f ~/.ssh/id_rsa_personal

執行過程中若不需要額外密碼,直接連按兩次 Enter 即可。這會在 ~/.ssh 目錄下產生四個檔案(兩組公私鑰)。

編輯 SSH Config 檔案

接著,建立或編輯 ~/.ssh/config 檔案:

nano ~/.ssh/config

在檔案中加入以下內容,這能讓 SSH 根據不同的 Host 別名選擇正確的金鑰:

Host github-work
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_work

Host github-personal
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_personal

將公鑰加入 GitHub 帳號

你需要分別讀取兩組公鑰內容,並貼到對應 GitHub 帳號的 Settings > SSH and GPG keys 中:

cat ~/.ssh/id_rsa_work.pub
cat ~/.ssh/id_rsa_personal.pub

修改專案的遠端路徑

當你使用 SSH Config 後,複製專案(Clone)或修改現有專案的遠端 URL 時,必須將原本的 github.com 替換成你在 Config 中設定的 Host 別名。

如果是新專案:

git clone git@github-work:company/project.git

如果是現有專案:

git remote set-url origin git@github-personal:username/repo.git

搭配 Local Config 自動切換作者

雖然 SSH 解決了登入問題,但 git commit 的作者資訊(Name/Email)仍需正確。建議在公司專案的資料夾內,單獨設定該目錄的使用者資訊:

git config user.name "Your Name"
git config user.email "[email protected]"

這樣一來,你在公司專案下 push 時會自動使用公司金鑰,且 commit 紀錄也會顯示公司電子郵件,完全不需要手動切換。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *