在 Visual Studio 中提交 Git

任何 Git 工作流的核心部分都是修改文件并提交这些文件中的更改。 虽然本文引用的是 GitHub 存储库,但你可以远程处理所选的 Git 提供程序,例如 GitHub 或 Azure DevOps。 或者,你也可以在本地工作,而不使用任何提供程序。

当你操作时,Git 会跟踪存储库中的文件更改,并将存储库中的文件分为三类。 这些更改等效于在命令行中输入 git status 命令时看到的内容:

  • 未修改的文件:自上次提交以来,这些文件未更改。
  • 已修改的文件:自上次提交以来,这些文件已更改,但尚未被暂存以用于下一次提交。
  • 已暂存的文件:这些文件已更改并将添加到下一次提交中。

当你执行操作时,Visual Studio 会在“Git 更改”窗口的“更改”部分中跟踪对项目的文件更改 。

Visual Studio 2022 中“Git 更改”窗口。

暂存更改并提交

若要在就绪时暂存更改,请选择要暂存的每个文件上的“+”(加号)按钮,或右键单击文件,然后选择“暂存”。 还可以使用“更改”部分顶部的暂存全部 +(加号)按钮,一键暂存所有已修改的文件。

暂存更改时,Visual Studio 将创建“已暂存的更改”部分。 只有“已暂存的更改”部分的更改会添加到下一次提交中,可以通过选择“提交暂存内容”来执行此操作 。 此操作的等效命令是 git commit -m "Your commit message"

Visual Studio 2022 中的“Git 提交”对话框。

还可单击“–”(减号)按钮来取消暂存更改。 此操作的等效命令是 git reset <file_path>(用于取消暂存一个文件)或 git reset <directory_path>(用于取消暂存目录中的所有文件)。

也可以通过跳过暂存区域来选择不暂存已修改的文件。 在这种情况下,Visual Studio 允许直接提交更改,而无需暂存更改。 只需输入提交消息,然后选择“全部提交”。 此操作的等效命令是 git commit -a

还可通过 Visual Studio 的“全部提交并推送”和“全部提交并同步”快捷方式,轻松地一键提交和同步 。 双击“更改”和“已暂存的更改”部分中的任何文件时,可以看到与该文件的未修改版本的逐行比较 。 请参阅比较文件 - 差异视图

Visual Studio 2022 中文件版本的逐行比较。

版本 17.6 中的新增功能:还可以通过键入 # 或选择提交消息文本框右下侧的 # 按钮来引用问题或拉取请求。 有关详细信息,请参阅引用问题和拉取请求博客文章。

版本 17.12 中的新增功能:重命名文件时,Git 更改窗口顶部会显示一个通知栏,告知你文件已重命名,并提示你暂存该更改。 此通知显示在暂存或提交任何内容之前。 你可能希望在进行其他更改之前暂存并提交更改,以确保 Git 将更改检测为重命名,而不是删除和添加新文件。

还原、重置或修改提交

双击“提交”时,Visual Studio 会在单独的工具窗口中打开其详细信息。 在此处可以还原提交、重置(撤消)提交、修改提交消息,或创建提交标记。 在提交中单击已更改的文件时,Visual Studio 将打开该提交及其父级的并排差异视图。

Visual Studio 2022 中的“提交详细信息”对话框。

使用 GitHub Copilot 聊天生成提交消息

借助 Visual Studio 2022 版本 17.9 及更高版本和 GitHub Copilot 扩展,可以使用 AI 生成描述更改的详细提交消息。

注意

若要启用 AI 生成的提交消息,需要 GitHub Copilot 和 GitHub Copilot Chat。 如果使用的是 Visual Studio 版本 17.10 或更高版本,请参阅获取适用于 Visual Studio 2022 版本 17.10 或更高版本的 GitHub Copilot

如果使用的是 Visual Studio 版本 17.9 或更高版本,请参阅获取适用于 Visual Studio 2022 版本 17.8 到 17.9 的 GitHub Copilot

显示 AI 生成的提交消息的屏幕截图。

准备好提交后,请使用提交消息编辑框右下角的 sparkly pen 图标(工具提示:添加 AI 生成提交消息),请求 AI 生成的提交消息。 生成 AI 生成的文本,并将其添加到已拥有的任何内容。 仔细阅读,以查看它是否准确。 可以选择接受插入或取消插入。 如果接受插入,则可以在提交文本之前编辑文本。 准备就绪后,请选择“提交暂存”按钮,或提交消息编辑框下方下拉列表中可用的其他提交选项之一。

注意

阅读 GitHub Copilot 业务隐私声明,了解 GitHub Copilot 如何保护数据的隐私。