環境設定 · Git 版本控制

Git 私人備份 Repo
小白完全指南

用 GitHub 私人倉庫當雲端保險箱,配合 .bat 腳本一鍵備份
附踩坑教訓:node_modules、Token 文件的正確排除方式

🔒Git 私人 Repo 是什麼

Git 是一套「版本控制系統」,記錄你的文件每一次修改的歷史,讓你可以隨時回到任何一個版本。GitHub 是 Git 的雲端平台,把你的文件存放在雲端伺服器上。

私人 Repo(Private Repository)就是在 GitHub 上建立一個只有你自己看得到的倉庫。別人搜尋找不到,沒有你授權也進不去。

比喻
Git 私人 Repo = 雲端上鎖保險箱。
你在家裡有一份重要文件(本地文件),你定期把它複印一份放進銀行的保險箱(GitHub 私人 Repo)。保險箱需要你的鑰匙才能打開,別人完全看不到裡面的內容。

好處是:就算電腦壞了、搬家了,保險箱裡的文件永遠在。

私人 Repo 與公開 Repo 的差別只在「誰能看見」。你建立時選擇 Private,就只有你自己的帳號能存取。

📦三個核心指令白話解釋

Git 備份的動作只有三步,對應三個指令。你不需要懂底層原理,只需要記住這三個比喻:

git add
把文件放進紙箱
告訴 Git:「這些文件我想要打包。」
你可以選所有文件(git add .),也可以只選某個文件。
比喻:把東西從桌上放進紙箱,還沒封口
git commit
把紙箱封口貼標籤
把已放進紙箱的文件封存,並寫下這次打包的說明(commit message),例如「更新設定文件」。
比喻:用膠帶封箱,貼上日期和備注
git push
把紙箱寄到 GitHub 保險箱
把封好的紙箱上傳到 GitHub。執行完後,即使本地文件刪掉了,雲端還有一份。
比喻:叫快遞把紙箱送到銀行保險箱
完整流程比喻
每次你改了文件,就是「在桌上整理了一些東西」。
git add = 把改過的東西放進紙箱
git commit = 封口,寫上「這次改了什麼」
git push = 寄去保險箱

下次要找之前的版本,只要打開保險箱,按日期找到那個紙箱就行。

用 .bat 腳本一鍵備份

每次手動輸入三個指令太麻煩。解決方法是寫一個 .bat 腳本(Windows 的自動化腳本文件),雙擊就自動執行所有步驟。

1
你在本地修改了文件
編輯設定文件、新增筆記、更新工作流程文件等,改完後存檔。
2
雙擊執行 .bat 備份腳本
腳本會自動進入你的項目資料夾,執行 git add、commit、push 三個動作。
3
腳本自動 add / commit / push
視窗一閃而過(或停留幾秒),顯示上傳成功的訊息就完成了。
4
文件已存入 GitHub 私人 Repo
打開瀏覽器登入 GitHub,就能看到最新版的文件已經在雲端了。

一個典型的備份 .bat 腳本長這樣:

backup.bat Windows 批次腳本
@echo off
:: 進入你的項目資料夾
cd /d "你的項目路徑"

:: 把所有修改的文件放進紙箱
git add .

:: 封口並貼上時間標籤
git commit -m "auto backup %date% %time%"

:: 寄去 GitHub
git push origin main

echo 備份完成!
pause
提示:腳本最後的 pause 讓視窗停住等你按任意鍵,這樣你能看到是否有錯誤訊息。確認沒問題後可以把 pause 移除,讓視窗自動關閉。

🗂️什麼該備份,什麼不該備份

不是所有文件都應該放進 Git。以下是判斷原則:

應該備份的文件
設定文件
例如 settings.json、config 文件、工具設定檔
工作流程文件 / 腳本
例如 .bat 腳本、Markdown 文件、自動化流程
學習筆記 / 操作記錄
純文字或 HTML 格式的筆記,版本記錄很有用
程式碼 / HTML 網頁
自己寫的代碼,方便追蹤每次修改
不應該備份的文件
Token / API Key / 密碼文件
包括 credentials.json、token.json、.env 文件。即使是私人 Repo 也要謹慎,因為未來可能不小心設成公開
node_modules 資料夾
JavaScript 依賴包,動輒幾百 MB,GitHub 有 100MB 單檔限制,push 必定失敗
個人隱私文件
護照掃描件、銀行記錄、醫療文件,不應放在任何雲端代碼倉庫
大型媒體文件
影片、音頻、大型圖片。GitHub 不是雲端硬碟,大文件用 Google Drive 或 OneDrive

🚫.gitignore 的作用

比喻
.gitignore = 保鏢名單。
你寫了一張名單,上面列出「這些文件永遠不要打包」。之後不管執行幾次 git add,名單上的文件都會被保鏢擋在門外,不會進入紙箱,自然也不會推送到 GitHub。

在項目根目錄建立一個叫 .gitignore 的文件(注意:文件名以點開頭,沒有副檔名),裡面每行寫一條排除規則:

.gitignore 常見範例
# 依賴包(永遠不要 commit)
node_modules/

# 密碼和憑證文件
token.json
credentials.json
.env
*.key

# 系統生成的臨時文件
.DS_Store
Thumbs.db

# 大型媒體文件
*.mp4
*.mp3

星號 * 是萬用字元,代表「任何名字」。*.key 表示所有以 .key 結尾的文件都排除。node_modules/ 後面的斜線表示排除整個資料夾。

重要:.gitignore 只對「還沒被 Git 追蹤的文件」有效。如果某個文件已經被 commit 過,之後在 .gitignore 加上它,不會自動移除記錄。你需要先用 git rm --cached 文件名 把它從追蹤中移除,再 commit 一次。

💻VS Code 手動 Push 操作

如果不想用指令列,VS Code 內建了圖形介面讓你直接點擊完成 push。步驟如下:

1
點擊 VS Code 左側工具欄的 Source Control 圖示(三個圓圈連線的圖示,快捷鍵 Ctrl + Shift + G
這裡會顯示所有有修改的文件清單
2
在「Message」欄位輸入這次的 commit 說明(可以隨便寫,例如「更新設定」)
這就是紙箱的標籤文字
3
點擊 Commit 按鈕(或按 Ctrl + Enter
這一步完成 git add + git commit
4
點擊 VS Code 最底部狀態列的 ↑↓ 同步箭頭
這個圖示在視窗最下方,旁邊通常顯示分支名稱,點一下就執行 git push
找不到同步箭頭?
底部狀態列必須有開啟 Git 才會顯示箭頭。如果看到的是「Publish Branch」,代表這個分支還沒 push 過,點它一樣會執行首次 push。

也可以在 Source Control 面板頂部的「...」選單裡找到「Push」選項。

⚠️踩坑教訓

以下是實際操作中遇到的坑,每一條都是真實教訓:

坑 1:node_modules 放進去把 GitHub 撐爆
情況:執行 git push 後,GitHub 報錯說單個文件超過 100MB,或者整個 push 卡死很久最後失敗。

原因:node_modules 裡有幾百個小套件,加起來幾百 MB,而且 GitHub 對單個文件有 100MB 上限。這些套件根本不需要備份,因為只要有 package.json,隨時可以用 npm install 重新下載。
解決:在 .gitignore 第一行加上 node_modules/,永遠排除。如果已經 commit 了,先執行 git rm -r --cached node_modules/ 再重新 commit。
坑 2:OAuth Token 文件「意外」被推送上去
情況:你以為 .gitignore 裡已經有排除 token.json 了,但實際上 push 完去 GitHub 一看,token.json 赫然在上面。

原因:有時候你用了 !folder/** 來強制包含某個資料夾的所有文件,這條規則的優先級很高,會蓋過後面寫的具體排除規則。也就是說,就算你另一行寫了 token.json 要排除,也沒用。
解決:把 token.json 的排除規則放在 !folder/** 那行的後面,但更安全的做法是不要用 ! 強制包含整個資料夾。把敏感文件移到專門的資料夾,在 .gitignore 整個排除那個資料夾。
坑 3:!folder/** 會覆蓋同文件夾內的具體排除規則
情況:.gitignore 裡同時有這兩行:
!config/**
config/token.json
結果 token.json 還是被 push 上去。

原因:Git 的 .gitignore 規則是「後者優先」,但 !config/** 的意思是「強制包含 config 資料夾的所有內容」,它把 token.json 的排除規則給覆蓋了。當一個資料夾被 ! 強制包含,裡面的單個文件排除規則就失效了。
解決:要排除資料夾內的特定文件,不能只寫文件名,必須寫完整路徑:
config/token.json 改成把 token.json 放到另一個不在 !config/** 白名單內的地方,或者完全不用 !folder/** 語法。
最安全的原則:每次 push 之前,先執行 git status 查看「Staged」區域的文件清單。確認沒有密碼或 Token 文件才執行 commit。

FAQ 常見問題

私人 Repo 真的只有我看得到嗎?
是的。GitHub 私人 Repo 對外完全不可見,搜尋引擎也爬不到。只有你本人帳號登入後才能看到,除非你主動把某人加為協作者(Collaborator)。

但仍要注意:不要把密碼直接硬編碼進程式碼裡。即使是私人 Repo,良好習慣是把敏感資訊放在 .env 文件並加入 .gitignore。
免費帳號可以建立私人 Repo 嗎?
可以。GitHub 免費方案(Free)允許無限個私人 Repo,也允許無限個協作者。私人 Repo 是完全免費的功能。
commit message 一定要寫什麼?
沒有硬性規定,但最好寫清楚「這次改了什麼」,方便以後查找。常見格式:

更新 Claude 設定文件
新增 2026-04 備份
auto backup 2026-04-01(腳本自動填入日期)

不要只寫「update」或「fix」這種模糊描述,一個月後你自己也不知道改了什麼。
git push 要輸入密碼,怎麼辦?
GitHub 已在 2021 年停止接受帳號密碼登入。正確方式是用 Personal Access Token(PAT)SSH Key 認證。

最簡單的方式:安裝 GitHub CLI(gh),執行 gh auth login 完成一次性授權,之後 git push 就不需要輸入密碼了。
已經 push 了密碼文件,怎麼補救?
第一步(立刻):去對應的服務(GitHub、Google Cloud 等)撤銷這個 Token/Key,讓它立即失效。這比清除 Git 記錄更重要。

第二步:git rm --cached 文件名 把文件從 Git 追蹤中移除,加入 .gitignore,再 commit 一次。

注意:即使從最新版本刪除了文件,Git 歷史記錄裡還是有。如果需要徹底清除歷史,要用 git filter-branch 或 BFG Repo-Cleaner 工具,但操作複雜,建議先換掉 Token 就好。
.gitignore 加了規則但文件還是被追蹤,怎麼辦?
原因:文件已經被 Git 追蹤(曾經被 commit 過),.gitignore 對已追蹤文件無效。

解決:執行 git rm --cached 文件名(只從 Git 記錄移除,不刪除本地文件),然後 commit 這個更改。之後 .gitignore 的規則就會生效。
↑ 回到頂部