关于 Visual Studio 中的 Git
Visual Studio 为 Git 提供了一个用户界面,这是一种广泛使用的新式版本控制系统。 无论源代码是托管在 GitHub 存储库、Azure DevOps 还是其他 Git 提供程序中,都可以在 Visual Studio IDE 中执行所有常见的版本控制任务。 或者,可以在完全没有提供程序的情况下在本地工作,并可以选择在准备好连接到提供程序时备份源。
使用的源代码不必是使用 Visual Studio 创建的。 无论是否有 Visual Studio 项目文件,都可以使用任何 Git 存储库中的任何源文件夹。
从 Visual Studio 中的 Git 和 GitHub 开始
要开始将 Git 与 Visual Studio 结合使用:
如果在 Git 提供程序(如 GitHub)上托管了 Git 存储库,请将存储库克隆到本地计算机。
否则,轻松创建一个新的 Git 存储库并添加代码。 如果还没有 Git 提供程序,建议从 GitHub 开始,因为 Visual Studio 中的 Git 体验已针对此提供程序进行了优化。 GitHub 提供免费且安全的云代码存储,你可以在其中存储代码并从任意位置使用任意设备访问它。
不仅可将GitHub 和 GitHub Enterprise 帐户添加到密钥链中,还可以像使用 Microsoft 帐户一样使用它们。 如果没有 GitHub 帐户,请立即按照以下步骤创建一个 GitHub 帐户以用于 Visual Studio。
如果要在命令行中使用 git 命令,还应安装 Git for Windows(而不是 Microsoft 产品)。
解决方案资源管理器中的的视图文件
克隆存储库或打开本地存储库时,Visual Studio 会切换到 Git 上下文。 解决方案资源管理器将在 Git 存储库的根目录中加载文件夹,并在目录树中扫描所有可查看文件,如 CMakeLists.txt
或具有 .sln
文件扩展名的文件。 有关详细信息,请参阅在解决方案资源管理器中查看文件。
分支和远程存储库
您可以使用分支将相关更改与您正在处理的不相关更改分开。 建议的 Git 工作流为你处理的每个功能或修补程序使用一个新的分支。 了解如何从 Visual Studio 创建分支。
创建新的分支并切换到新分支后,可以通过更改现有文件或添加新文件,然后将工作提交到存储库以开始工作。 要详细了解如何在 Visual Studio 中进行提交并进一步了解 Git 中的文件状态,请参阅进行提交页面。
Git 是分布式版本控制系统,这意味着到目前为止所做的所有更改都是仅本地更改。 要将这些更改提交到远程存储库,必须将这些本地提交推送到远程存储库。
如果在团队中工作,或者使用不同的计算机,则可能经常需要在远程存储库上提取和拉取新的更改。 要了解有关在 Visual Studio 中管理 Git 网络操作的详细信息,请参阅提取、拉取、推送和同步页面。
存储库管理和协作
但有时,将重点放在 Git 存储库上会更有意义。 例如,你可能需要了解清楚团队正在处理的内容,或者从其他分支复制提交,或只是清理传出的提交。 Visual Studio 包含强大的存储库浏览和协作功能,使你无需使用其他工具。
为帮助你专注于 Git 存储库,Visual Studio 有一个“Git 存储库”窗口,它是存储库中所有详细信息(包括本地和远程分支以及提交历史记录)的合并视图。 可以从菜单栏上的“Git”或“视图”,或从状态栏直接访问此窗口 。
浏览和管理 Git 存储库
要详细了解如何使用 Visual Studio 中的“Git 存储库”窗口浏览和管理 Git 存储库,请参阅以下页面:
处理合并冲突
如果两个开发人员在文件中修改了相同的行,并且 Git 无法自动识别哪个是正确的,则在合并期间可能会发生冲突。 Git 暂停合并,并通知你处于冲突状态。 在解决合并冲突页面了解详细信息。
个性化设置 Git 设置
要在存储库级别和全局级别个性化 Git 设置,请执行以下操作:
转到菜单栏上的“Git”>“设置”或“工具”>“选项”>“源代码管理”>“Git 全局设置”
选择所需的选项。
工作效率增强
在 Visual Studio 2022 版本 17.12 中,可以选择任何代码部分,然后右键单击,展开 Git 子菜单,然后选择“复制 GitHub Permalink”(或复制 AzureDevOps Permalink)以生成 GitHub Permalink 或 Azure DevOps Permalink 并将其复制到剪贴板。 从那里,你可以将其粘贴到可以使用链接的任何位置,在浏览器中或通过电子邮件、聊天会话和文档共享它。 还可以在 Git 存储库窗口中的嵌入提交详细信息视图中执行相同的操作。 使用此功能,无需切换分支即可引用先前提交中的特定代码。 必须使用 Git 托管提供程序、GitHub 或 Azure DevOps 的帐户登录到 Visual Studio 。
在 Visual Studio 2022 版本 17.6 中,可以搜索并链接到 GitHub 问题和 Azure DevOps 工作项。 请参阅博客文章 Git Features to Enhance Productivity。
Git 现在是 Visual Studio 2019 中的默认版本控制体验。 从版本 16.6 开始,我们致力于构建功能集,并根据你的反馈对其进行迭代。 在 16.8 版本中,它成为每个人的默认版本控制体验。
注意
我们也会继续在 Visual Studio 2022 中构建 Git 功能集并进行迭代更新。 若要了解最新功能更新的详细信息,请参阅 Visual Studio 中的多存储库支持博客文章。
了解有关 Git 的详细信息
Git 是使用最广泛的新式版本控制系统,因此,无论你是专业开发人员,还是正在学习编码的人员,Git 都非常有用。 如果你是刚刚接触 Git,可访问 https://git-scm.com/ 网站开始了解。 你可以从该网站找到速查表、畅销在线图书和 Git 基础知识视频。
Visual Studio 2019 中的 Git 入门
我们将引导你逐步使用 Visual Studio 中的新 Git 体验,但若要先进行快速导览,请观看以下视频:
视频长度: 5.27 分钟
可以通过三种方式开始结合使用 Git 与 Visual Studio 来提高工作效率:
- 创建新的 Git 存储库。 如果已有与 Git 无关的代码,则可以从创建新的 Git 存储库开始。
- 克隆现有 Git 存储库。 如果要处理的代码不在计算机上,可以克隆任何现有的远程存储库。
- 打开现有 Git 存储库。 如果计算机上已有代码,则可以使用“文件”>“打开”>“项目/解决方案”(或“文件夹”)打开代码,Visual Studio 会自动检测其是否具有已初始化的 Git 存储库 。
注意
自 16.8 版本起,Visual Studio 2019 包含完全集成的 GitHub 帐户体验。 你现在可以将 GitHub 和 GitHub Enterprise 帐户都添加到密钥链中。 你可以添加并使用这些帐户,就像使用 Microsoft 帐户一样,也就是说,你将能够更轻松地跨 Visual Studio 访问 GitHub 资源。 有关详细信息,请参阅在 Visual Studio 中使用 GitHub 帐户页面。
提示
如果没有 GitHub 帐户,则可以先按照创建 GitHub 帐户以用于 Visual Studio 页面中概述的步骤操作。
在 Visual Studio 2019 中创建新的 Git 存储库
如果你的代码未与 Git 关联,则可以首先创建一个新的 Git 存储库。 为此,请从菜单栏中选择“Git”>“创建 Git 存储库” 。 然后,在“创建 Git 存储库”对话框中,输入你的信息。
利用“创建 Git 存储库”对话框,可以轻松地将新存储库推送到 GitHub。 默认情况下,新存储库是专用的,这意味着只有你可以访问它。 如果取消选中此框,则该存储库将是公用的,这意味着 GitHub 上的任何人都可以查看它。
提示
无论存储库是公用的还是专用的,即使你不与团队合作,也应将代码的远程备份安全地存储在 GitHub 上。 这也使得无论使用哪台计算机,你都可以使用你的代码。
可选择使用“仅限本地”选项,创建仅限本地的 Git 存储库。 也可使用“现有远程”选项,将本地项目与 Azure DevOps 或任何其他 Git 提供程序上的任何现有空远程存储库关联。
在 Visual Studio 2019 中克隆现有的 Git 存储库
Visual Studio 包含简单的克隆体验。 如果知道要克隆的存储库的 URL,则可以将该 URL 粘贴到“存储库位置”部分,然后选择要将 Visual Studio 克隆到的磁盘位置。
如果不知道存储库 URL,则可以利用 Visual Studio 轻松浏览到现有的 GitHub 或 Azure DevOps 存储库,然后再进行克隆。
在 Visual Studio 2019 中打开现有的本地存储库
克隆存储库或创建存储库之后,Visual Studio 将检测该 Git 存储库,并将其添加到 Git 菜单中的“本地存储库”列表。
在这里,你可以快速访问 Git 存储库并在其之间快速切换。
查看 Visual Studio 2019 解决方案资源管理器中的文件
克隆存储库或打开本地存储库时,Visual Studio 会通过保存并关闭先前打开的解决方案和项目,将你切换到该 Git 上下文。 解决方案资源管理器将在 Git 存储库的根目录中加载文件夹,并在目录树中扫描所有可查看文件。 其中包括 CMakeLists.txt 等文件或具有 .sln 文件扩展名的文件。
Visual Studio 将根据你在解决方案资源管理器中加载的文件调整其视图:
- 如果克隆包含单个
.sln
文件的存储库,则解决方案资源管理器会直接为你加载该解决方案。 - 如果解决方案资源管理器在存储库中未检测到任何
.sln
文件,则默认情况下将加载文件夹视图。 - 如果存储库中有多个
.sln
文件,则解决方案资源管理器将显示可用视图的列表供你选择。
可以使用解决方案资源管理器工具栏中的“切换视图”按钮,在当前打开的视图和视图列表之间进行切换。
有关详细信息,请参阅打开存储库中的项目教程的解决方案资源管理器中的视图文件部分。
Visual Studio 2019 中的“Git 更改”窗口
当你操作时,Git 会跟踪存储库中的文件更改,并将存储库中的文件分为三类。 这些更改等效于在命令行中输入 git status
命令时看到的内容:
- 未修改的文件:自上次提交以来,这些文件未更改。
- 已修改的文件:自上次提交以来,这些文件已更改,但尚未被暂存以用于下一次提交。
- 已暂存的文件:这些文件已更改并将添加到下一次提交中。
当你执行操作时,Visual Studio 会在“Git 更改”窗口的“更改”部分中跟踪对项目的文件更改 。
准备暂存更改时,请单击要暂存的每个文件上的“+”(加号)按钮,或右键单击文件,然后选择“暂存”。 还可以使用“更改”部分顶部的暂存全部“+”(加号)按钮,一键暂存所有已修改的文件。
暂存更改时,Visual Studio 将创建“已暂存的更改”部分。 只有“已暂存的更改”部分的更改会添加到下一次提交中,可以通过选择“提交暂存内容”来执行此操作 。 此操作的等效命令是 git commit -m "Your commit message"
。 还可单击“–”(减号)按钮来取消暂存更改。 此操作的等效命令是 git reset <file_path>
(用于取消暂存一个文件)或 git reset <directory_path>
(用于取消暂存目录中的所有文件)。
也可以通过跳过暂存区域来选择不暂存已修改的文件。 在这种情况下,Visual Studio 允许直接提交更改,而无需暂存更改。 只需输入提交消息,然后选择“全部提交”。 此操作的等效命令是 git commit -a
。
还可通过 Visual Studio 的“全部提交并推送”和“全部提交并同步”快捷方式,轻松地一键提交和同步 。 双击“更改”和“已暂存的更改”部分中的任何文件时,可以看到与该文件的未修改版本的逐行比较 。
提示
如果已连接到 Azure DevOps 存储库,可使用“#”字符将 Azure DevOps 工作项和提交相关联。 可通过“团队资源管理器”>“管理连接”连接 Azure DevOps 存储库。
在 Visual Studio 2019 中选择现有分支
Visual Studio 会在“Git 更改”窗口顶部的选择器中显示当前分支。
当前分支也显示在 Visual Studio IDE 右下角的状态栏中。
可以从这两个位置在现有分支之间进行切换。
在 Visual Studio 2019 中新建一个分支
还可以创建一个新的分支。 此操作的等效命令是 git checkout -b <branchname>
。
创建新分支非常简单,只需输入分支名称并将其基于现有分支。
可以选择一个现有的本地或远程分支作为基础。 “签出分支”复选框会自动切换到新创建的分支。 此操作的等效命令是 git checkout -b <new-branch><existing-branch>
。
Visual Studio 2019 中的 Git 存储库窗口
Visual Studio 有一个新的“Git 存储库”窗口,该窗口是存储库中所有详细信息的合并视图,包括所有分支、远程库和提交历史记录。 可以从菜单栏上的“Git”或“视图”,或从状态栏直接访问此窗口 。
在 Visual Studio 2019 中管理分支
从 Git 菜单中选择“管理分支”时,你将在“Git 存储库”窗口中看到分支树状视图 。 在左侧窗格中,可以使用右键单击上下文菜单来签出分支、创建新的分支、合并、变基、挑拣等。 单击分支后,可以在右窗格中查看其提交历史记录的预览。
Visual Studio 2019 中的传入和传出提交
提取分支时,“Git 更改”窗口在分支下拉箭头下有一个指示器,其中显示了远程分支的未拉取提交数。 该指示器还显示未推送的本地提交数。
该指示器还可作为链接,将你带到“Git 存储库”窗口中该分支的提交历史记录。 历史记录的顶部现在会显示这些传入和传出提交的详细信息。 你还可以在这里决定拉取或推送提交。
Visual Studio 2019 中的提交详细信息
双击“提交”时,Visual Studio 会在单独的工具窗口中打开其详细信息。 在此处,你可以还原提交、重置提交、修改提交消息,或在提交上创建标记。 在提交中单击已更改的文件时,Visual Studio 将打开该提交及其父级的并排差异视图。
在 Visual Studio 2019 中处理合并冲突
如果两个开发人员在文件中修改了相同的行,并且 Git 无法自动识别哪个是正确的,则在合并期间可能会发生冲突。 Git 暂停合并,并通知你处于冲突状态。
使用 Visual Studio 可以轻松地识别和解决合并冲突。 首先,“Git 存储库”窗口会在窗口顶部显示一个金色的信息栏。
“Git 更改”窗口还会显示“合并正在进行,但存在冲突”消息,而未合并的文件位于其下方的单独部分中。
但是,如果没有打开这些窗口,而是转到具有合并冲突的文件,则无需搜索以下文本:
<<<<<<< HEAD
=======
>>>>>>> main
相反,Visual Studio 会在页面顶部显示金色的信息栏,指示打开的文件存在冲突。 然后,可以单击链接以打开“合并编辑器”。
Visual Studio 2019 中的“合并编辑器”
Visual Studio 中的合并编辑器是一种三向合并工具,用于显示传入的更改、当前的更改和合并的结果。 可以使用“合并编辑器”顶层的工具栏在文件中的冲突和自动合并的差异之间导航。
还可以使用切换来显示/隐藏差异、显示/隐藏单词差异,以及自定义布局。 每侧的顶部都有复选框,你可从任何一侧通过这些复选框来执行所有更改。 但若要进行单独的更改,可以单击任一侧的冲突行左侧的复选框。 最后,解决完冲突后,可以在合并编辑器中选择“接受合并”按钮。 然后,可以编写提交消息并提交更改以完成解决操作。
在 Visual Studio 2019 中个性化 Git 设置
若要在存储库级别和全局级别对 Git 设置进行个性化设置和自定义,请转到菜单栏上的“Git”>“设置”,或转到菜单栏上的“工具”>“选项”>“源代码管理” 。 然后选择所需的选项。
如何在 Visual Studio 2019 中使用完整的团队资源管理器体验
从版本 16.8 开始,新的 Git 体验是 Visual Studio 2019 中的默认版本控制系统。 但是,可以在需要时将它关闭。 转到“工具”>“选项”>“环境”>“预览功能”,然后切换“新的 Git 用户体验”复选框,这会使你切换回用于 Git 的团队资源管理器。
后续步骤
提示
要了解如何在 Visual Studio 中使用 Git 和 GitHub,请注册 Git 学习系列。