同一台電腦同時使用兩個 GitHub 帳號
在同一台電腦上使用兩個 GitHub 帳號,最常見的衝突點是 SSH 金鑰、Git 設定檔 (user.name / user.email) 以及 憑證快取。我幫你規劃一個清晰的工作模式,並提供工具選擇,讓兩個帳號能乾淨分隔。
~/.ssh/id_rsa_personal~/.ssh/id_rsa_work~/.ssh/config 中設定 Host 別名:
Host github-personal
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_personal
Host github-work
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_work
git clone git@github-work:company/repo.git
git clone git@github-personal:username/repo.git
~/.gitconfig) 保持預設帳號,例如個人帳號。repo/.git/config) 覆蓋使用者資訊:
git config user.name "Work User"
git config user.email "work@example.com"
~/.git-credentials 或 GCM 中分別儲存。alias git-personal='git config user.name "Personal" && git config user.email "me@personal.com"'
alias git-work='git config user.name "Work" && git config user.email "me@work.com"'
| 面向 | 個人帳號 | 工作帳號 |
|---|---|---|
| SSH 金鑰 | id_rsa_personal + github-personal |
id_rsa_work + github-work |
| Git 使用者資訊 | 全域設定 | 專案層級覆蓋 |
| 認證方式 | PAT / SSH | PAT / SSH |
| Repo 管理 | 個人專案資料夾 | 工作專案資料夾 |
| GUI 工具 | Sourcetree / Fork (個人 profile) | GitKraken / Tower (工作 profile) |
github-work / github-personal,一眼就能分辨。user.email,避免 commit 歸錯帳號。在同一台電腦快速切換 GitHub 帳號環境。這個腳本會同時處理 SSH 金鑰、Git 使用者資訊,並且能在不同專案資料夾自動套用正確的帳號。
.bat)@echo off
REM === GitHub 帳號切換工具 ===
REM 使用方式:
REM switch-github personal
REM switch-github work
SETLOCAL
IF "%1"=="" (
echo 請指定帳號模式:personal 或 work
EXIT /B 1
)
IF "%1"=="personal" (
echo 切換到 [個人帳號] 環境...
REM 設定 Git 使用者資訊
git config --global user.name "YourPersonalName"
git config --global user.email "yourpersonal@email.com"
REM 設定 SSH config alias
set GIT_SSH_COMMAND=ssh -i %USERPROFILE%\.ssh\id_rsa_personal
)
IF "%1"=="work" (
echo 切換到 [工作帳號] 環境...
REM 設定 Git 使用者資訊
git config --global user.name "YourWorkName"
git config --global user.email "yourwork@email.com"
REM 設定 SSH config alias
set GIT_SSH_COMMAND=ssh -i %USERPROFILE%\.ssh\id_rsa_work
)
echo 完成切換!
ENDLOCAL
switch-github.bat,放在 PATH 可執行的位置。switch-github personal
switch-github work
git clone 或 git push 時,就會自動套用對應的帳號設定。C:\Projects\Work 就自動切到工作帳號,若是 C:\Projects\Personal 就切到個人帳號。.sh) 搭配 alias,效果相同。一個 進階版批次腳本,能根據「目前所在的 repo 路徑」自動判斷要用哪個 GitHub 帳號。這樣你就不用手動切換,走到哪個專案就自動套用正確身份。
.bat)@echo off
REM === GitHub 帳號自動判斷工具 ===
REM 規則:
REM - C:\Projects\Work\* 使用工作帳號
REM - C:\Projects\Personal\* 使用個人帳號
SETLOCAL
REM 取得目前所在路徑
SET CURRDIR=%CD%
REM 判斷路徑是否包含 Work
echo 目前路徑:%CURRDIR%
echo.
IF /I "%CURRDIR%"=="%CURRDIR:Work=%" (
REM 沒有 Work 字樣 → 檢查 Personal
) ELSE (
echo 偵測到 [工作專案] 路徑,套用工作帳號...
git config user.name "YourWorkName"
git config user.email "yourwork@email.com"
set GIT_SSH_COMMAND=ssh -i %USERPROFILE%\.ssh\id_rsa_work
goto :done
)
IF /I "%CURRDIR%"=="%CURRDIR:Personal=%" (
REM 沒有 Personal 字樣 → 預設不處理
) ELSE (
echo 偵測到 [個人專案] 路徑,套用個人帳號...
git config user.name "YourPersonalName"
git config user.email "yourpersonal@email.com"
set GIT_SSH_COMMAND=ssh -i %USERPROFILE%\.ssh\id_rsa_personal
goto :done
)
echo 未偵測到專案類型,請確認路徑規則!
goto :end
:done
echo 帳號設定完成!
:end
ENDLOCAL
auto-github.bat,放在 PATH 可執行的位置。auto-github
C:\Clients\A → 使用客戶 A 帳號。accounts.env),腳本只要讀取即可,方便維護。case 判斷路徑,效果相同。一個 環境變數設定檔範例,讓帳號資訊集中管理,批次腳本只要讀取這個檔案就能自動套用。這樣維護起來更乾淨、可擴充。
accounts.env 範例# === GitHub 帳號設定檔 ===
# 格式:帳號代號=值
# 個人帳號
PERSONAL_NAME=YourPersonalName
PERSONAL_EMAIL=yourpersonal@email.com
PERSONAL_SSH=%USERPROFILE%\.ssh\id_rsa_personal
# 工作帳號
WORK_NAME=YourWorkName
WORK_EMAIL=yourwork@email.com
WORK_SSH=%USERPROFILE%\.ssh\id_rsa_work
@echo off
REM === GitHub 帳號自動判斷工具 (讀取 accounts.env) ===
SETLOCAL ENABLEDELAYEDEXPANSION
REM 載入設定檔
FOR /F "tokens=1,2 delims==" %%A IN (accounts.env) DO (
SET %%A=%%B
)
REM 取得目前所在路徑
SET CURRDIR=%CD%
echo 目前路徑:%CURRDIR%
echo.
REM 判斷路徑
IF /I "%CURRDIR%"=="%CURRDIR:Work=%" (
REM 沒有 Work → 檢查 Personal
) ELSE (
echo 偵測到 [工作專案],套用工作帳號...
git config user.name "%WORK_NAME%"
git config user.email "%WORK_EMAIL%"
set GIT_SSH_COMMAND=ssh -i %WORK_SSH%
goto :done
)
IF /I "%CURRDIR%"=="%CURRDIR:Personal=%" (
REM 沒有 Personal → 預設不處理
) ELSE (
echo 偵測到 [個人專案],套用個人帳號...
git config user.name "%PERSONAL_NAME%"
git config user.email "%PERSONAL_EMAIL%"
set GIT_SSH_COMMAND=ssh -i %PERSONAL_SSH%
goto :done
)
echo 未偵測到專案類型,請確認路徑規則!
goto :end
:done
echo 帳號設定完成!
:end
ENDLOCAL
accounts.env,集中管理帳號資訊。auto-github.bat,腳本會自動判斷路徑並套用正確帳號。accounts.env 增加一組變數,不必改動主腳本。這樣一來,你就有一個 模組化的帳號管理系統:
accounts.env → 集中管理帳號資訊auto-github.bat → 自動判斷路徑並套用| 14 | ||
|---|---|---|
| 1:24 AM - December 07, 2025 | ||
| 1:24 AM - December 07, 2025 | ||
| 1:24 AM - December 07, 2025 | ||
| 1:24 AM - December 07, 2025 | ||
| 1:24 AM - December 07, 2025 | ||
| 1:24 AM - December 07, 2025 | ||
| 1:23 AM - December 07, 2025 | ||
| 8:20 PM - December 06, 2025 | ||
| 8:20 PM - December 06, 2025 | ||
| 8:20 PM - December 06, 2025 | ||
| 8:20 PM - December 06, 2025 | ||
| 8:20 PM - December 06, 2025 | ||
| 8:20 PM - December 06, 2025 | ||
| 8:20 PM - December 06, 2025 |