現在,讓我們來了解下日常開發中最常用到功能——更改
通過前面的學習,我們知道當代碼有了更改的時候,只需要填上備注信息,點擊全部提交就可以將代碼提交到版本庫了。
不過有時候全部提交並不是我們想要的,我將用兩個場景來講解。
1、部分提交—— 暫存(Stage)
比如你和同事正在開發一個新功能,他現在需要用到你提供的一個接口,但是你的其他功能正在開發,短期內無法完成,如果全部提交可能無法編譯通過。
現在該怎么辦呢?我們一起來看一下。
項目中有兩個更改,但是HomeController未開發完成,我只想提交WeatherForecastController。
右鍵要提交的文件,然后點擊暫存(Stage),這一步正是執行了之前介紹過的 git add 命令,將更改提交至了暫存區。
通過 git status 命令來驗證下。
這個時候VS的按鈕也從提交全部(Commit All)變成了提交臨時數據(Commit Staged),接下來提交就可以了。
2、保護現場—— 存儲(Stash)
在實際工作中我們經常會這樣一種情況:項目在發布到生產環境后,你繼續開發新的功能。
現在生產環境發現BUG需要立即修復,而正在開發的功能短時間內是無法完成並提交的。
我們肯定不能提交未完成的代碼,也不可能撤銷辛辛苦苦寫的代碼,存儲(Stash)功能就派上用場了。
存儲功能就是將我們尚未提交的部分存起來,得到一個干凈的工作區,等BUG修復功能完成后再恢復。
好了,在VS中看看怎么操作。下面的文章中會涉及分支的概念,如果不太情況也沒關系,可以看看后面關於分支的文章。
master分支中的代碼,已經發布到生成環境。我們在新建的dev分支中繼續開發新功能,新增了一個Post方法。此時發現了BUG需要修復。
我們需要切換到master,不得不先進行存儲操作,不然的話會出現兩種情況:
1、可以切換:在dev分支未提交的更改會繼續在master中。
2、無法切換:VS會提示進行存儲,如果強制切換到master分支,更改將丟失。
大家可以自己試一下就知道了,至於為什么會這樣,去了解一下Git是如何實現分支的。
Well,那就存吧。可以在文本框中輸入描述信息,然后點擊存儲(Stash)會出現兩個菜單項。
1、全部存儲(Stash All):全部存起來。
2、全部存儲並保持暫存(--保留索引):存工作區,不存暫存區。中文反而不容易看懂,英文都是和Git命令對應的。
--keep-index (index就是暫存區)就是Git的stash命令的一個選項,官方描述是這樣:
我們就先點第一個全部存儲(Stash All),可以看見在存儲列表里面出現了一條記錄。
看一眼,我們得到了一個干凈的工作區,我們可以開心的切換到master分支,新建hotfix分支進行修復啦。
修復完成后,右鍵點擊就可以恢復成之前我們正在開發時的樣子。
這個地方你看中文又會開始疑惑,英文就是對應的Git命令。
應用(Apply)
應用並還原暫存(--索引):工作區的放工作區,暫存區的放暫存區
將所有作為非暫存應用:全部放工作區
彈出(Pop)
彈出並還原暫存(--索引):工作區的放工作區,暫存區的放暫存區,同時刪掉。
將所有作為非暫存彈出:全部放工作區,同時刪掉。
讓我們再用Git命令操作一遍。
此時有一個新增的文件,還有一個修改了的文件,修改的文件已經加到暫存區。
注意:這里有一個新增的文件為Untracked
使用 git stash 命令進行存儲
結果發現新增的文件沒有被存儲
這是為什么呢,我們來看一下官網的說明。
原來默認情況下只存儲工作區和暫存區。要使用-u參數才行
再看看,這就OK了。
或者先使用 git add 命令將文件添加到暫存區再進行存儲。
存儲成功后可以使用 git stash list 命令查看當前的存儲列表。
使用上面講到的 git stash applt 或 git stash pop 可以還原,使用 git stash drop 來刪除。
如果有多次存儲,可以使用 git stash apply stash@{1} 還原指定的存儲對象。
OK,更改的部分就說完了,我也是初學,僅僅介紹了最基礎的操作,可以滿足大部分日常需求,更多的命令大家自己到官網學習吧。
參考:廖雪峰的Git教程