Skip to content
github-workflow logo

GitHub 工作流程指南

github-workflow

GitHub 工作流程,包含帳號資訊、gh CLI 安裝狀態、建立 repo、push、多地同步

NeverSight/skills_feed0installs213stars

SKILL.md

Full skill instructions

GitHub 工作流程指南

帳號資訊

項目值
GitHub 帳號bingo-taiwan
GitHub 網址https://github.com/bingo-taiwan
SSH 金鑰~/​.ssh/​id_ed25519
Git user.namebingo-taiwan

各環境 gh CLI 安裝狀態

啟動時先執行 hostname 判斷目前在哪台機器:

機器hostnamegh CLI路徑/備註
家裡 WindowsDESKTOP-J9CIIVU✅ 已安裝 v2.83.2"/​c/​Program Files/​GitHub CLI/​gh.exe"
公司電腦(待補充)❓ 待確認若無,用 winget install GitHub.cli 安裝
GCP LMSlms❌ 未安裝通常不需要,用 SSH 方式 push
Linode 各主機booktest/​goodins/​lt1-4❌ 未安裝通常不需要

gh CLI 快速安裝

Windows

winget install GitHub.cli

Linux (Debian/​Ubuntu)

curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/​usr/​share/​keyrings/​githubcli-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/​usr/​share/​keyrings/​githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /​etc/​apt/​sources.list.d/​github-cli.list > /​dev/​null
sudo apt update
sudo apt install gh

登入(安裝後執行一次)

gh auth login
# 選擇:GitHub.com → SSH → Login with a web browser

常用 gh CLI 指令

建立新 repo 並 push

# 在專案目錄中執行
gh repo create REPO_NAME --public --source=. --push --description "描述"

# 若 remote 已存在,改用:
gh repo create REPO_NAME --public --description "描述"
git push -u origin master

其他常用指令

# 檢查登入狀態
gh auth status

# 列出自己的 repo
gh repo list

# Clone repo
gh repo clone bingo-taiwan/​REPO_NAME

# 建立 PR
gh pr create --title "標題" --body "內容"

# 查看 PR
gh pr list
gh pr view 123

純 Git 操作(不用 gh CLI)

當機器沒有 gh CLI 時,用傳統方式:

1. 先在 GitHub 網頁建立 repo

https://github.com/new

2. 本地初始化並 push

git init
git add .
git commit -m "Initial commit"
git remote add origin [email protected]:bingo-taiwan/​REPO_NAME.git
git push -u origin master

多地同步工作流

家裡 ↔ 公司 ↔ GCP ↔ Linode 多地透過 GitHub 同步

⚠️ 開工前必做檢查(重要!)

問題:如果在公司修改了程式碼但忘記 push,回家後直接開工會造成版本衝突或覆蓋對方的修改。

Claude 執行規則:在修改任何與遠端伺服器同步的專案前,必須先執行同步檢查:

# 1. 檢查本地是否有未提交的修改
git status

# 2. 檢查與 GitHub 的差異
git fetch origin
git log HEAD..origin/​master --oneline  # 遠端有但本地沒有的 commit
git log origin/​master..HEAD --oneline  # 本地有但遠端沒有的 commit

# 3. 如果遠端有更新,先 pull
git pull origin master

如果發現差異:

  • 遠端有新 commit → 先 git pull 再開始工作
  • 本地有未 push 的修改 → 先確認是否要 push,或需要 merge
  • 兩邊都有修改 → 小心處理,可能需要 merge 或 rebase

同時檢查伺服器版本

如果專案部署在伺服器上,也要比對伺服器版本:

# 比較本地和伺服器的 webhook.php
ssh lt4 "cat /​home/​lt4.mynet.com.tw/​public_html/​linebot/​webhook.php" > /​tmp/​server_webhook.php
diff webhook.php /​tmp/​server_webhook.php

# 如果有差異,確認哪個是最新版本再決定同步方向

開始工作前

git pull origin master

結束工作時

git add .
git commit -m "描述"
git push origin master

衝突處理

# 若 push 失敗,先 pull
git pull --rebase origin master

# 解決衝突後
git add .
git rebase --continue
git push origin master

SSH 金鑰設定

SSH config 已設定 GitHub 連線(~/​.ssh/​config):

Host github.com
    HostName github.com
    User git
    IdentityFile ~/​.ssh/​id_ed25519
    IdentitiesOnly yes

測試 SSH 連線

ssh -T [email protected]
# 應顯示:Hi bingo-taiwan! You've successfully authenticated...

常見問題

問題:gh: command not found

  • 檢查是否已安裝
  • Windows:用完整路徑 "/​c/​Program Files/​GitHub CLI/​gh.exe"
  • 或重新開啟終端機讓 PATH 生效

問題:Permission denied (publickey)

問題:remote origin already exists

# 查看現有 remote
git remote -v

# 移除後重新加
git remote remove origin
git remote add origin [email protected]:bingo-taiwan/​REPO_NAME.git