目錄
- 1. **工作區(Working Directory)**
- 2. **緩存區(Stage/Index)**
- 3. **本地倉庫(Local Repository)**
- 4. **遠程倉庫(Remote Repository)**
- 5. **貯藏區(Stash)**
- 6. **完整的 Git 分區切換場景示例**
- **6.1 查看當前狀態**
- **6.2 從工作區切換到緩存區**
- **6.3 從緩存區切換到本地倉庫**
- **6.4 從本地倉庫推送到遠程倉庫**
- **6.5 從遠程倉庫拉取更新**
- **6.6 進行代碼存儲(使用貯藏區)**
- **總結**
- 7. **結束語**
在 Git 中,五個分區(貯藏區、工作區、緩存區、本地倉庫、遠程倉庫)之間的切換涉及不同的 Git 命令。以下是各個分區的切換方式:
1. 工作區(Working Directory)
這是你正在編輯代碼的地方,就是本地的文件夾。
-
從本地倉庫切換到工作區(檢出代碼)
git checkout <branch-name> # 切換到某個分支 git checkout <commit-hash> -- <file> # 還原某個文件到指定版本
-
從緩存區撤銷到工作區(取消
git add
)git reset HEAD <file> # 取消暫存,回到工作區
2. 緩存區(Stage/Index)
git add
之后的文件進入緩存區(暫存區)。
-
從工作區切換到緩存區(添加到暫存區)
git add <file> # 添加文件到暫存區 git add . # 添加所有修改的文件到暫存區
-
從緩存區切換回工作區(撤銷暫存)
git reset HEAD <file> # 取消暫存
3. 本地倉庫(Local Repository)
git commit
之后的文件進入本地倉庫。
-
從緩存區切換到本地倉庫(提交到本地倉庫)
git commit -m "提交信息" # 提交暫存區的文件到本地倉庫
-
從本地倉庫切換到工作區(回退提交)
git reset --soft HEAD~1 # 回退上一次提交,但保留暫存區的修改 git reset --mixed HEAD~1 # 回退上一次提交,同時撤銷暫存區的修改 git reset --hard HEAD~1 # 回退上一次提交,并丟棄所有修改
4. 遠程倉庫(Remote Repository)
git push
之后,提交進入遠程倉庫。
-
從本地倉庫推送到遠程倉庫
git push origin <branch-name> # 推送到遠程分支
-
從遠程倉庫拉取到本地倉庫
git fetch origin <branch-name> # 獲取遠程分支更新,但不合并 git pull origin <branch-name> # 拉取遠程更新并合并
5. 貯藏區(Stash)
貯藏區用于臨時保存當前的工作狀態,方便切換分支或同步代碼。
-
從工作區/緩存區切換到貯藏區(存儲當前進度)
git stash # 暫存當前工作區和緩存區的修改 git stash push -m "描述" # 帶描述的 stash
-
從貯藏區恢復到工作區/緩存區
git stash pop # 恢復最新的 stash 并刪除 git stash apply # 應用最新的 stash 但不刪除
-
查看貯藏區內容
git stash list # 查看所有存儲的狀態 git stash show # 查看最近一次的 stash 詳情
6. 完整的 Git 分區切換場景示例
假設你正在開發一個網站項目 my_project
,你要修改 index.html
文件,并將代碼提交到遠程倉庫。
6.1 查看當前狀態
首先,確認你的 Git 倉庫狀態:
git status
如果 index.html
已修改,Git 會顯示:
On branch main
Changes not staged for commit:(use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes)modified: index.html
此時 index.html
處于 工作區。
6.2 從工作區切換到緩存區
將修改添加到緩存區:
git add index.html
再次運行 git status
:
Changes to be committed:(use "git restore --staged <file>..." to unstage)modified: index.html
此時 index.html
進入 緩存區。
6.3 從緩存區切換到本地倉庫
提交代碼:
git commit -m "更新首頁內容"
輸出:
[main 123abc] 更新首頁內容1 file changed, 5 insertions(+)
此時 index.html
已存入 本地倉庫。
6.4 從本地倉庫推送到遠程倉庫
git push origin main
輸出:
Counting objects: 3, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 345 bytes | 345.00 KiB/s, done.
To github.com:user/my_project.git456def..123abc main -> main
代碼成功推送到 遠程倉庫。
6.5 從遠程倉庫拉取更新
如果有其他人修改了代碼,你可以同步遠程倉庫:
git pull origin main
如果有新代碼更新,Git 會自動合并到你的 本地倉庫 和 工作區。
6.6 進行代碼存儲(使用貯藏區)
假設你正在修改 style.css
,但需要切換分支處理其他問題:
git stash
Git 會顯示:
Saved working directory and index state WIP on main: 123abc 更新首頁內容
此時 style.css
進入 貯藏區。
當你完成其他任務后,恢復代碼:
git stash pop
代碼恢復到 工作區 和 緩存區。
總結
操作 | 命令 |
---|---|
工作區 → 緩存區 | git add <file> |
緩存區 → 本地倉庫 | git commit -m "message" |
本地倉庫 → 遠程倉庫 | git push origin <branch> |
遠程倉庫 → 本地倉庫 | git fetch / git pull |
緩存區 → 工作區(撤銷暫存) | git reset HEAD <file> |
本地倉庫 → 工作區(回退提交) | git reset --soft/mixed/hard HEAD~1 |
工作區/緩存區 → 貯藏區 | git stash |
貯藏區 → 工作區/緩存區 | git stash pop / git stash apply |
這樣,你可以自由切換 Git 的五個分區 🚀
7. 結束語
- 本節內容已經全部介紹完畢,希望通過這篇文章,大家對
Git
有了更深入的理解和認識。- 感謝各位的閱讀和支持,如果覺得這篇文章對你有幫助,請不要吝惜你的點贊和評論,這對我們非常重要。再次感謝大家的關注和支持!點我關注??