VS2019 Git 常用操作詳解(三)—— 更改(Changes)


現在,讓我們來了解下日常開發中最常用到功能——更改

 

通過前面的學習,我們知道當代碼有了更改的時候,只需要填上備注信息,點擊全部提交就可以將代碼提交到版本庫了。

不過有時候全部提交並不是我們想要的,我將用兩個場景來講解。

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教程


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM