现在,让我们来了解下日常开发中最常用到功能——更改

vs自带创建Git仓库 vs2019 git_工作区

 

通过前面的学习,我们知道当代码有了更改的时候,只需要填上备注信息,点击全部提交就可以将代码提交到版本库了。

vs自带创建Git仓库 vs2019 git_暂存区_02

不过有时候全部提交并不是我们想要的,我将用两个场景来讲解。

1、部分提交—— 暂存(Stage)

比如你和同事正在开发一个新功能,他现在需要用到你提供的一个接口,但是你的其他功能正在开发,短期内无法完成,如果全部提交可能无法编译通过。

现在该怎么办呢?我们一起来看一下。

项目中有两个更改,但是HomeController未开发完成,我只想提交WeatherForecastController。

vs自带创建Git仓库 vs2019 git_git_03

vs自带创建Git仓库 vs2019 git_暂存区_04

git add

vs自带创建Git仓库 vs2019 git_工作区_05

git status

 

vs自带创建Git仓库 vs2019 git_暂存区_06

这个时候VS的按钮也从提交全部(Commit All)变成了提交临时数据(Commit Staged),接下来提交就可以了。

vs自带创建Git仓库 vs2019 git_git_07

2、保护现场—— 存储(Stash)

在实际工作中我们经常会这样一种情况:项目在发布到生产环境后,你继续开发新的功能。

现在生产环境发现BUG需要立即修复,而正在开发的功能短时间内是无法完成并提交的。

我们肯定不能提交未完成的代码,也不可能撤销辛辛苦苦写的代码,存储(Stash)功能就派上用场了。

vs自带创建Git仓库 vs2019 git_工作区_08

存储功能就是将我们尚未提交的部分存起来,得到一个干净的工作区,等BUG修复功能完成后再恢复。

好了,在VS中看看怎么操作。下面的文章中会涉及分支的概念,如果不太情况也没关系,可以看看后面关于分支的文章。

master分支中的代码,已经发布到生成环境。我们在新建的dev分支中继续开发新功能,新增了一个Post方法。此时发现了BUG需要修复。

vs自带创建Git仓库 vs2019 git_git_09

 

 我们需要切换到master,不得不先进行存储操作,不然的话会出现两种情况:

1、可以切换:在dev分支未提交的更改会继续在master中。

2、无法切换:VS会提示进行存储,如果强制切换到master分支,更改将丢失。

大家可以自己试一下就知道了,至于为什么会这样,去了解一下Git是如何实现分支的。

Well,那就存吧。可以在文本框中输入描述信息,然后点击存储(Stash)会出现两个菜单项。

1、全部存储(Stash All):全部存起来。

2、全部存储并保持暂存(--保留索引):存工作区,不存暂存区。中文反而不容易看懂,英文都是和Git命令对应的。

--keep-index  (index就是暂存区)就是Git的stash命令的一个选项,官方描述是这样:

vs自带创建Git仓库 vs2019 git_暂存区_10

vs自带创建Git仓库 vs2019 git_暂存区_11

  我们就先点第一个全部存储(Stash All),可以看见在存储列表里面出现了一条记录。

 

vs自带创建Git仓库 vs2019 git_暂存区_12

 

vs自带创建Git仓库 vs2019 git_暂存区_13

 看一眼,我们得到了一个干净的工作区,我们可以开心的切换到master分支,新建hotfix分支进行修复啦。

修复完成后,右键点击就可以恢复成之前我们正在开发时的样子。

vs自带创建Git仓库 vs2019 git_git_14

 这个地方你看中文又会开始疑惑,英文就是对应的Git命令。

vs自带创建Git仓库 vs2019 git_git_15

应用(Apply)

应用并还原暂存(--索引):工作区的放工作区,暂存区的放暂存区

将所有作为非暂存应用:全部放工作区

弹出(Pop)

弹出并还原暂存(--索引):工作区的放工作区,暂存区的放暂存区,同时删掉。

将所有作为非暂存弹出:全部放工作区,同时删掉。

 

让我们再用Git命令操作一遍。

此时有一个新增的文件,还有一个修改了的文件,修改的文件已经加到暂存区。

vs自带创建Git仓库 vs2019 git_暂存区_16

 

 注意:这里有一个新增的文件为Untracked

使用  git stash

vs自带创建Git仓库 vs2019 git_git_17

 

结果发现新增的文件没有被存储

vs自带创建Git仓库 vs2019 git_暂存区_18

 

 这是为什么呢,我们来看一下官网的说明。

vs自带创建Git仓库 vs2019 git_vs自带创建Git仓库_19

 

 原来默认情况下只存储工作区和暂存区。要使用-u参数才行

vs自带创建Git仓库 vs2019 git_工作区_20

vs自带创建Git仓库 vs2019 git_工作区_21

 

再看看,这就OK了。

vs自带创建Git仓库 vs2019 git_git_22

 

或者先使用 git add

 

存储成功后可以使用 git stash list

vs自带创建Git仓库 vs2019 git_暂存区_23

 

使用上面讲到的 git stash applt 或 git stash pop 可以还原,使用 git stash drop

vs自带创建Git仓库 vs2019 git_工作区_24

 

如果有多次存储,可以使用 git stash apply stash@{1}

 

vs自带创建Git仓库 vs2019 git_git_25

 

 

vs自带创建Git仓库 vs2019 git_工作区_26

 

 

OK,更改的部分就说完了,我也是初学,仅仅介绍了最基础的操作,可以满足大部分日常需求,更多的命令大家自己到官网学习吧。

 

参考:廖雪峰的Git教程