二、快速掌握 Git 之 Visual Studio 的使用

经过上一篇博客的介绍,大家肯定已经掌握的 Git 的基本使用,最起码已经能够使用 TortoiseGit 图形化工具管理本地的各种文档资料。作为技术开发人员,大家更多关注的是 Git 如何管理程序代码。虽然 TortoiseGit 图形化工具也可以管理程序代码,但是我们有更好更方便的工具可以使用,今天我就向大家分享一下 Visual Studio 2019 (以下简称为 VS2019)集成并使用 Git 的方法,用来管理 .net 相关的代码。这里就不介绍 VS2019 和 Git 的安装过程中,下面我们就直奔主题。

需要注意的是:本篇博客仍然介绍的是 Git 操作本地仓库,后续我会单独编写博客介绍有关 Git 操作远程仓库,以及如何搭建开发环境下的 Git 远程仓库。


一、配置 VS2019 集成 Git

在 VS2019 和 Git 安装完成后,首先要配置 VS2019 使用 Git 进行源代码管理。选择 VS2019 顶部的菜单项(工具 ---> 选项),在弹出的对话框中,从左侧选择 ”源代码管理“,从右侧的下拉框中选择 Git,如下图所示:

二、快速掌握 Git 之 Visual Studio 的使用

然后发现左侧多出来了一些跟 Git 配置有关的选项,从左侧选择 “Git 全局配置” 这个选项,在右侧填写用户名和邮箱,这里可以随便填写,这个主要是用来在版本历史记录中识别用户身份(识别是哪个用户提交的版本)。

二、快速掌握 Git 之 Visual Studio 的使用

然后点击确定,保存配置成功后,就会发现在 VS2019 顶部菜单上,多出来了一个 Git 菜单,这说明 VS2019 集成 Git 配置成功。

二、快速掌握 Git 之 Visual Studio 的使用


二、创建版本库和工作目录

我们先使用 VS2019 创建一个控制台项目,我的项目存储路径是:D:\GitTest\VsDemo 。由于只创建一个简单的演示项目,为了查看方便,所以我将解决方案和项目放在同一个目录中了。在实际工作中的绝大部分场景中,我们都会在一个解决方案下创建多个项目,所以在实际工作中,不要勾选 “将解决方案和项目放在同一个目录中”。

二、快速掌握 Git 之 Visual Studio 的使用

此时我们发现:新创建的 VsDemo 项目,并没有被 Git 进行托管,如下图所示:

二、快速掌握 Git 之 Visual Studio 的使用

我们在 Vs2019 中,选择 VsDemo 的解决方案,通过鼠标右键菜单,选择 “创建 Git 存储库”。

二、快速掌握 Git 之 Visual Studio 的使用

在弹出的对话框中,左侧选择 “仅限本地”,右侧的本地路径,默认就是项目所在的文件夹,然后点击 “创建” 即可。

二、快速掌握 Git 之 Visual Studio 的使用

然后我们发现 VsDemo 项目所在目录中的文件,有了被托管的绿色图标,在 VS2019 的解决方案下,文件前面也有了 “小锁” 的标志,这说明 VsDemo 项目的代码已经被 Git 进行版本管理,工作目录已经创建成功。

二、快速掌握 Git 之 Visual Studio 的使用

此时你可以打开 Program.cs 文件,编写一句代码,然后发现解决方案下的 Program.cs 文件前面变成了一个红色的对勾,表示该文件被修改过了。

二、快速掌握 Git 之 Visual Studio 的使用

通过 VS2019 的右下角可以看出当前处在 master 分支上,此时你可以将修改过的 Program.cs 文件,提交到本地仓库的 master 主分支上。我们可以选择被修改的文件,也可以选择整个解决方案(大部分情况下,都是直接选择整个解决方案),然后选择右键菜单 “Git ---> 提交或存储” 。

二、快速掌握 Git 之 Visual Studio 的使用

然后会看到下面的界面,可以清楚的看到要提交到的分支版本是 master,填写好备注信息后,提交即可。

二、快速掌握 Git 之 Visual Studio 的使用

当你在 VS2019 项目中添加一个新文件的话,该文件前面会自动出现一个 + 号标识,编辑完新文件后,提交即可。至于删除代码文件,非常简单,这里就不截图进行演示了。

二、快速掌握 Git 之 Visual Studio 的使用

由上面的操作演示,我们可以看到:VS2019 集成 Git 对代码文件的基本操作,实在是太简单方便了,不需要记忆 Git 命令。


三、创建分支、合并分支、解决冲突、删除分支

在实际项目开发过程中,我们会经常遇到这样的情景:master 主分支的代码已经测试通过,编译发布到公网正式环境了,接下来我们需要开发新的需求功能,此时我们是在 master 主分支上继续开发新需求功能,还是新创建一个分支开发新需求功能?
这主要根据你所要开发的新需求功能的 任务量大小复杂程度 而定。

大部分情况下,我们实际工作中开发的新需求功能,工作量都会比较大,复杂程度也较高,需要花费时间也较长,此时最好创建一个新分支来开发新需求功能,最好让 master 分支的代码版本始终保持跟发布到公网正式环境的版本一致,这样做的好处很多。万一新功能在开发过程中,运营人员反馈了公网环境中的一些 bug,万一产品经理或者领导要求临时调整一下公网上的一些界面或功能等等,此时通过修改 master 主分支的代码,我们就可以快速响应并及时发布。等新的功能需求开发完毕测试无误,发布到公网正式环境后,我们就可以考虑合并分支,或者直接把新的分支作为主分支。

在上面的基本操作的介绍中,我们已经在 master 分支的 Program.cs 文件添加了一句代码,并且已经提交。下面我们要创建一个新的 dev 分支,在 VS2019 的顶部菜单中,选择 "Git ---> 新建分支 ",如下图所示:

二、快速掌握 Git 之 Visual Studio 的使用

弹出如下对话框,录入新分支的名称 dev ,勾选上 “签出分支” 对话框,点击 “创建” 即可。

二、快速掌握 Git 之 Visual Studio 的使用

然后在 Program.cs 文件添加了一句代码(如下图所示),然后提交代码到 dev 分支上。

二、快速掌握 Git 之 Visual Studio 的使用

然后从 VS2019 右下角点击分支的名称,弹出分支列表界面,选择 master 分支,将 VsDemo 项目切换到 master 分支上,如下图所示:

二、快速掌握 Git 之 Visual Studio 的使用

切换到 master 分支后,然后在 Program.cs 文件添加了一句代码(如下图所示),然后提交代码到 master 分支上。

二、快速掌握 Git 之 Visual Studio 的使用

然后在 VS2019 顶部菜单,选择 “Git --> 管理分支”,如下图所示:

二、快速掌握 Git 之 Visual Studio 的使用

在弹出的管理分支界面的左侧列表中,选择 “dev”,然后打开右键菜单,选择 "将 dev 合并到 master" 菜单(如下图所示)。

二、快速掌握 Git 之 Visual Studio 的使用

合并完成后,由于我们在 master 分支和 dev 分支上,同时更改了 Program.cs 文件,所以 Program.cs 文件就有合并冲突,Program.cs 文件前面的图标也发生了变化,打开 Program.cs 文件可以看到冲突的细节,如下所示:

二、快速掌握 Git 之 Visual Studio 的使用

此时我们有两种途径来解决冲突:

1 直接修改 Program.cs 文件,编译没有问题后,提交即可。

2 鼠标选择 Program.cs 文件,点击鼠标右键菜单 “Git --> 解决”。

二、快速掌握 Git 之 Visual Studio 的使用

弹出如下界面,分为 左右下 3 个视图:
左侧是 dev 分支代码,右侧是当前合并的目标 master 分支,可以对比出差异,下面是需要修改的最终代码视图。

二、快速掌握 Git 之 Visual Studio 的使用

二、快速掌握 Git 之 Visual Studio 的使用

我们将 Program.cs 文件修改完成后,编译运行测试没有问题后,点击 “接受合并” 即可,然后将合并后的 Program.cs 文件提交到 master 版本库。

此时 dev 分支就没有什么用处了,我们可以把 dev 分支进行删除,在 VS2019 顶部菜单中,选择 “Git --> 管理分支”,打开如下界面,选择 dev 分支,通过鼠标右键菜单选择 “删除” 即可,如下所示:

二、快速掌握 Git 之 Visual Studio 的使用


到此为止,有关 VS2019 集成 Git 对代码文件管理的基本操作,已经介绍的差不多了。至于其它相关的操作,一般情况下用的都很少,如果需要用的时候,自己研究一下即可,都是中文菜单界面,学习和研究都非常简单,这里就不再赘述。

通过本篇博客的介绍,大家已经能够在本地仓库中,通过 Visual Studio 集成 Git 并熟练的管理 .net 代码的版本了,后续我们继续编写有关 Git 的博客,请大家持续关注。



上一篇:使用 Visual Studio 2019 开发 Linux C++ 应用程序


下一篇:【论文笔记】VL-BERT: PRE-TRAINING OF GENERIC VISUAL- LINGUISTIC REPRESENTATIONS