现在,让我们来了解下日常开发中最常用到功能——更改
通过前面的学习,我们知道当代码有了更改的时候,只需要填上备注信息,点击全部提交就可以将代码提交到版本库了。
不过有时候全部提交并不是我们想要的,我将用两个场景来讲解。
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,更改的部分就说完了,我也是初学,仅仅介绍了最基础的操作,可以满足大部分日常需求,更多的命令大家自己到官网学习吧。