大数跨境
0
0

Visual Studio中集成的Git功能详解(上)

Visual Studio中集成的Git功能详解(上) Win开发者
2025-12-05
9
导读:前言Visual Studio中深度集成了git功能,可以很方便地进行源代码版本控制功能。

前言

Visual Studio中深度集成了git功能,可以很方便地进行源代码版本控制功能。

大部分日常的操作我们可以通过界面来完成,这样就省去了输入git命令的时间,也可以不用记很多参数。

但这毕竟是辅助工具,掌握常用的git命令行还是很有必要的。

言归正传,接下来开始介绍Visual Studio 中集成的git功能。

本文以Visual Studio 2022为例进行演示

 

安装

Visual Studio的UI中已经集成了git相关功能,但是也需要安装git后才能使用。

image

 

如果没有安装git,在使用相关功能时,可能会看到如下的提示

 

image

 

安装方式可以通过以下两种

1、在Visual Studio的安装程序中,勾选<适用于Windows的Git>

推荐使用这种方式,因为免去了单独下载和安装的环节

 

2、访问git官方网站,下载安装包手动安装

下载地址:Git - Install for Windows

 

导入/克隆(clone)代码

方法1、在Visual Studio的启动界面上选择克隆存储库

image

 

输入项目地址

image

 

方法2、通过git命令行/git gui

输入

1 git clone https://github.com/zhaotianff/ImageViewer.git

 

分支(branch)功能

Git中的分支(branch)是一个轻量级的、可移动的指针,指向我们所做的提交。

默认分支的名称是master(github现已更新为main)。

每当做出任何commit时,它都会自动前进。

在Git中,可以创建任意子分支,从主存储库创建另一条开发线,开发新功能或修复错误。

一旦功能或错误修复完成,可以将它合并回主分支,然后删除子分支(也可以保留)。

如下图所示:

image

 

创建分支

Git分支只是一个小引用,用于保存准确的提交历史记录;

创建分支时不会创建源代码的多个副本。

在工具栏上点击当前分支,在弹出的面板中,选择创建分支。

在弹出的窗口中输入新分支的名称,并选择基于的分支,再点击创建,即可创建分支

image

 

对应的git命令行

# 方法1:使用 checkout(兼容所有 Git 版本)git checkout -b 新分支名称 基础分支名称# 方法2:使用 switch(Git 2.23+ 推荐,更直观)git switch -c 新分支名称 基础分支名称

 

推送本地分支

创建本地分支后,需要将分支推送到服务器后,才能在服务器上看到新创建的分支。

选择Gti->管理分支菜单

image

 

找到对应的分支,在右键菜单中选择推送

image

 

推送成功后,可以看到提示信息

image

 

此时我们打开git服务器上的页面,可以看到刚推送的分支

image

 

 对应的git命令

1 git push origin 分支名称

 

切换分支

在工具栏上选择当前分支,在弹出的面板中选择要切换的分支。

本地分支是指存在本地电脑上的分支。

远程是指存储在git服务器上的分支。

image

对应的git命令

1 git checkout 分支名称

 

删除分支

删除本地分支

当我们只想删除本地分支,而不删除远程服务器上的分支时。

可以通过右键菜单里的删除菜单进行删除

image

对应 的git命令

1 git branch -d 分支名称

 

通过这种情况删除的分支,还可以通过下面的方式恢复回来。

在remotes/origin文件夹下,选择服务器上本地已经删除的分支,右键选择签出,即可恢复分支。

image

 

对应的git命令行

1 git checkout -b 删除的分支 origin/删除的分支

 

删除服务器上的分支

当我们想彻底删除分支时,可以通过在remotes/origin文件夹下面的分支上打开右键菜单,选择删除菜单。即可永久删除分支

image

 

注意,此操作不可逆,在删除前会有确认对话框

image

 对应的git命令

1 git push origin --delete 远程分支名称

 

更改、暂存和提交功能

文件状态

当我们从git服务器clone一个项目时,所有的文件都是处于未修改的状态(Unmodified)。

当我们对文件进行了修改,修改的文件就变成了修改状态(Modified),可以在右下角看到修改的文件数量

image

 

单击修改数量图标,可以看到已经修改的文件

image

如果我们要把文件提交到git服务器上,就需要先进行暂存(Staging)。

我们看一下这几种状态的含义

未跟踪(Untracked):指的是工作区中存在,但未被 Git 纳入版本控制的文件。正常使用场景下,我们可以不考虑这种状态。

未修改(Unmodified):当我们从服务器导入代码,或进行提交后的文件状态

已修改:对文件进行了编辑,就变成了已修改状态

暂存 (Staging):把文件放到暂存列表中,用于下次提交(Commit)。

ec73f4e59822b4fc6347295cc6cd9ef9_lifecycle

 

 

例如我修改了3个文件,但是下次提交时,只想提交两个文件。就可以对这两个文件进行暂存

demo

对应的git命令

1git add App.xaml2 git add MainWindow.xaml

 

如果我们想把文件从暂存列表中移出,在文件上单击右键,在打开的菜单里选择取消暂存即可。

image

 

对应的git命令

1 git restore --staged 文件名

  

提交更改

当把文件放到暂存列表后,就可以对文件进行提交(Commit)。

在提交前,我们需要编辑此次提交的日志

image

 

对应的git命令

1 git commit -m "提交日志xxxxx"

 

当进行提交后,本地的git仓库已经有了这条提交记录,但是还未同步到服务器。

可以在状态栏上看到具体的数量 

image

 

此时我们单击传出数量,在弹出的菜单中,选择推送,即可将本地的提交记录推送到服务器。

image

 

也可以在提交时直接推送,我一般习惯了使用这种方式进行操作。可以一键完成提交并推送

image

 

撤消更改

当我们对一个代码文件进行修改后,可以在修改列表中双击这个文件,与未修改的文件进行对比

 

image

 

如果我们需要撤销某一行的修改,可以在对比页面的修改行上点撤消行按钮

image

 

如果需要撤销整个文件的修改,在文件右键菜单中选择撤销更改即可

image

 

对应的git命令行

1 git restore <file-name>

 

修改提交日志信息

当提交未推送到服务器上时,可以修改提交日志信息。

在工具栏点击传入/传出按钮,然后选择查看所有提交

image

 

双击本地提交

image

 

 然后在右侧的面板中编辑提交日志消息即可

image

 

提取、推送、拉取和同步功能

当我们点击这个查看传入/传出按钮时,可以在这里看到提取、拉取、推送和同步这几个菜单项。下面依次介绍一下这些功能的区别。

image

 

推送(Push)

推送功能在前面我们已经使用过了,它的作用是把本地的修改同步到服务器,包括修改文件、创建分支等操作。 

在前面我们还介绍过分支功能,

如果我们创建了一个空的分支,可以在分支的菜单里直接将这个分支推送到远程存储库。

如果我们在本地创建了分支,并在这个分支里修改了文件,那么在推送时,它会通过首先创建与本地存储库同名的分支,然后向其推送本地提交,将更改发布到远程存储库。

如果在推送操作期间,Visual Studio发现远程提交和本地提交之间存在任何冲突,它将立即中断操作。

必须先解决这些冲突,然后才能推送。在后面我们会介绍如何解决冲突。

 

提取(Fetch)

当我们在服务器进行了修改,或者同仓库的其它协同者更新了仓库代码,而本地又并未同步这些修改。

我们可以通过提取(Fetch)功能,把这些修改导入到本地,但是不自动合并这些修改。

如果服务器上有修改,可以在这里看到修改列表

image

 

拉取(Pull)

拉取的功能和提取类似,但是它会自动合并修改。

如果在合并过程中,发现有冲突,系统会提示你。

必须在处理这些冲突之后,才能进行下次推送。

接下来我们演示一下如何处理拉取过程中的文件冲突。

假设我们在本地增加一行代码,如下所示

image

 

然后项目的其它协作者也修改了这行并将他的修改推送到了服务器

image

此时我们进行Pull或Sync(先Pull再Push)的操作时,就会产生冲突,如下所示

image

 

我们在冲突的文件上双击,可以看到如下的界面

image

 

在这里我们可以钩选采用服务器上的版本(左上),也可以钩选采用本地的版本(右上),也可以两边都要。

在编辑完成后,选择接受合并按钮即可。

 

 

合并完成后,需要我们再提交一次

image

 

由于冲突会导致一次多余的提交记录 ,所以在多人协同开发时,在每次修改前,都执行一下拉取或同步命令,保证本地的文件是最新的。

虽然 在后面我们会介绍如何避免产生这条多余的提交记录,但是我们还是要养成良好的开发习惯。

 

同步(Sync)

这个我们在前面已经介绍过它的作用了,这的作用就是先拉取(Pull)再推送(Push)。


【声明】内容源于网络
0
0
Win开发者
Windows开发技术分享与传播。主要涵盖C#/WPF桌面开发、Win32桌面开发、PowerShell、基础逆向技术、Windows高级技巧等。
内容 160
粉丝 0
Win开发者 Windows开发技术分享与传播。主要涵盖C#/WPF桌面开发、Win32桌面开发、PowerShell、基础逆向技术、Windows高级技巧等。
总阅读91
粉丝0
内容160