使用提交保存工作

Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022 |Azure DevOps Server 2020

Visual Studio 2019 |Visual Studio 2022

修改存储库中的文件时,Git 不会自动拍摄工作快照。 通过暂存特定更改,告知 Git 要在快照中捕获哪些文件更改。 暂存后,通过提交保存快照。

本文提供以下任务的过程:

  • Git 如何跟踪更改
  • 提交内容
  • 如何暂存更改
  • 如何创建提交
  • 如何更新上次提交

有关 Git 工作流的概述,请参阅 Azure Repos Git 教程

先决条件

类别 要求
项目访问权限 项目的成员。
权限 - 查看专用项目中的代码:至少 是基本 访问权限。
- 克隆或参与专用项目中的代码: 参与者 安全组的成员或项目中的相应权限。
- 设置分支或存储库权限: 管理 分支或存储库的权限。
- 更改默认分支: 编辑存储库的策略 权限。
- 导入存储库: 项目管理员 安全组的成员或 Git 项目级 “创建存储库 ”权限设置为 “允许”。 有关详细信息,请参阅设置 Git 存储库权限
Services 已启用存储库
工具 可选。 使用 az repos 命令: Azure DevOps CLI

注释

在公共项目中,具有 利益干系人 访问权限的用户具有对 Azure Repos 的完全访问权限,包括查看、克隆和参与代码。

类别 要求
项目访问权限 项目的成员。
权限 - 查看代码:至少 基本 访问权限。
- 克隆或参与代码: 参与者 安全组的成员或项目中的相应权限。
Services 已启用存储库

Git 如何跟踪更改

在存储库中工作时,Git 会跟踪所有 已跟踪 文件的更改。 跟踪的文件是当前暂存或包含在上一次提交中的文件。 Git 将跟踪的文件分为三个类别:

  • 未修改的文件 - 自上次提交以来尚未更改的文件。
  • 已修改的文件 - 自上次提交以来已更改的文件,但尚未暂存下一次提交。
  • 暂存文件 - 自上次提交以来已更改的文件,并暂存下一个提交。

显示存储库中三种状态之间的文件的生命周期的屏幕截图。

创建提交时,仅对快照使用暂存文件和未修改的文件。 保留对已修改文件的未标记更改,但快照包含这些文件的未修改版本。 Git 不会跟踪对新文件的更改,也不会在快照中包含新文件,直到暂存它们。

提交是在本地 Git 存储库中创建的。 每个提交不必完美,可能需要多次提交才能完成预期更改。 在工作时创建提交,完成后,可以将提交 推送 到远程存储库,以便与他人共享你的工作。

提交内容

每个 提交 都包含以下信息:

  • 提交时存储库中所有跟踪文件的快照。 虽然 Git 使用快照来计算差异,但快照并不是提交之间的差异。 快照支持在 分支 之间快速切换,并支持 合并 分支。
  • 对父提交(s)的引用。 大多数提交都有一个父级,但在分支合并后下一个提交具有多个父级,存储库中的第一个提交没有。
  • 描述提交中更改的消息。 创建提交时输入消息。

Git 使用每个提交的快照和父引用来维护存储库中开发的完整记录。 若要调查代码中的更改,可以查看存储库的 Git 历史记录

如何暂存更改

若要为提交创建快照,请执行以下作:

  • 暂存 新文件 ,让 Git 知道要将它们添加到快照,并且希望 Git 跟踪这些文件的更改。
  • 存已编辑的文件 ,以告知 Git 想要快照中修改的文件版本,而不是未修改的文件版本。
  • 暂存 已删除的文件 ,让 Git 知道你想要从快照中删除这些文件,并且不再被跟踪。

若要从快照中排除临时文件、日志文件或其他文件,可以将 Git 配置为 忽略特定文件

注释

Git 支持对已编辑的文件进行交互式暂存,以便你可以选择在文件中暂存特定更改。 当你希望在不同的提交中编辑不同的文件时,此功能非常有用。

Visual Studio 2022 通过使用 Git 菜单、Git 更改以及解决方案资源管理器中的上下文菜单提供 Git 版本控制体验。 Visual Studio 2019 版本 16.8 还提供 团队资源管理器 Git 用户界面。 有关详细信息,请参阅 Visual Studio 2019 - 团队资源管理器 选项卡。

“Git 更改 ”窗口中,右键单击 “更改 ”部分中的文件,然后选择 “暂 存”以将其添加到 “暂存更改 ”部分。

Visual Studio 中“Git 更改”窗口中“更改”选项的屏幕截图。

或者,可以通过选择文件旁边的加号来暂存已更改的文件。 若要暂存文件夹中所有已更改的文件,请选择文件夹旁边的加号。 若要暂存存储库中的所有已更改文件,请选择 “更改” 部分右上角的加号。

可以告诉 Git 通过右键单击文件并选择“ 忽略此本地项 ”或 “忽略此扩展名”来忽略文件。 如果存储库中不存在 .gitignore 文件,则任一命令都创建一个 .gitignore 文件,并为其添加一个条目。 忽略的文件不会显示在 Visual Studio 的 “更改” 部分中。 但是, .gitignore 文件对跟踪的文件没有影响。 有关如何将 Git 配置为忽略跟踪的文件的信息,请参阅 “忽略文件”。 为了节省时间,可以从 GitHub gitignore 存储库下载适用于各种开发环境的 .gitignore 模板。

注释

从 Visual Studio 2022 版本 17.3 开始,Visual Studio 支持在文件中暂存部分更改。 有关详细信息,请参阅 Visual Studio 中的阶段代码行

如何创建提交

“Git 更改”窗口中,输入描述暂存更改的消息,然后选择“提交暂存”。

显示 Visual Studio 中的提交信息链接的屏幕截图。

选择提交链接以获取提交详细信息。

显示 Visual Studio 中“Git 更改”窗口的提交详细信息链接的屏幕截图。

注释

如果所有更改均未标记,可以通过选择“ 全部提交”跳过暂存和直接提交。

Visual Studio 中“Git 更改”窗口中“全部提交”选项的屏幕截图。

如何更新上次提交

Git 支持更改上次提交的暂存文件或消息。 此作将最后一次提交替换为合并提交中的暂存文件并使用新提交消息的新提交。 如果忘记暂存文件或上次提交消息具有拼写错误,则修改提交非常有用。

警告

不要修改已 推送的 提交,因为这将导致远程存储库出现同步问题。 对于推送提交,请使用以下策略之一:

  • 创建并推送另一个提交,以修复先前提交导致的问题。
  • 撤消推送的先前提交,方法是 git revert 使用创建一个新提交来 还原 之前提交所做的所有更改。 然后推送新提交。

“Git 更改” 窗口中,可以选择暂存一个或多个文件,输入提交消息,选择“ 修订”,然后选择“ 提交暂存”。

显示 Visual Studio 的“Git 更改”窗口中的“修改以前的提交”选项的屏幕截图。

“Git 更改”窗口支持修改提交消息、暂存文件或同时修改这两者。 选择 “修订”时,将显示上一个提交的标识符 SHA。

后续步骤