偶爾會有某一部分的代碼或缺陷修復需要臨時被提前發布,假設當前分支已修改了這個BUG,但當前分支已存在其他未開發完的代碼,無法臨時提交全部代碼的情況。
解決方法
1. 嚴格切分支: 為每個 BUG / 需求 從當前模塊的主分支中切一個分支出來對應開發。
2. 串行開發&頻繁push:在該分支中不進行並行開發,每開發或修復一個需求,就進行一次push。
3. 提交指定文件(非常靈活)
本文介紹第三種方法的具體實現操作
首先來明確 Git 的三個板塊:
- 工作區
- 暫存區
- 版本庫
我們在 Git 的工作區進行開發
用 add 命令將工作區變更的代碼保存至暫存區
用 commit 命令將暫存區的變更推送至本地倉庫的版本庫
最后用 push 命令將本地的版本庫上傳推送至鏈接的遠程倉庫
命令行
########## 依據上下文順序執行 ##########
git status -s # 查看倉庫狀態
git add [src/.../.../文件名] # 將工作區中指定的文件提交至暫存區 [路徑](參考上一條命令 git status 輸出的被修改文件的路徑)
git stash -u -k # 忽略工作區未被執行 git add 的文件變更,將其隱藏起來,這樣在執行 git commit 時不會被影響
git commit -m [提交了一個版本] # 將已執行 git add 的暫存區中的文件提交至版本庫,並為本次提交書寫注釋 [版本注釋]
git push # 將版本庫推送至遠程倉庫(remote/origin)
git stash pop # 恢復工作區被忽略的文件
Git status -s 狀態碼
例如:
路徑前的紅色字母位置為狀態碼占位符
A | 當前分支本地倉庫的新增文件(遠程倉庫不存在) |
C | 文件的一個新拷貝 |
D | 當前分支本地倉庫被刪除的文件(遠程倉庫仍存在) |
M | 內容 / mode變更的文件 |
R | 文件名被修改的文件 |
T | 類型改變的文件 |
U | 當前分支本地倉庫中未被合並的文件(需要完成合並才能進行提交) |
X | 未知狀態的文件(可能是遇到 Git 的 bug 了,可以向 Git 提交 bug report) |
? | 未被 Git 進行管理的文件,可以使用 git add src/.../.../file 把文件名為 file 的文件添加至 Git 的被管理目錄 |