使用提交保存工作

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

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

本文提供了下列任务的过程:

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

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

Git 如何跟踪更改

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

  • 未修改的文件 - 自上次提交以来未更改的文件。
  • 已修改的文件 - 自上次提交以来已更改但还没有为下一次提交暂存的文件。
  • 暂存文件 - 自上次提交以来已更改且已为下一次提交暂存的文件。

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

创建提交时,仅将暂存文件和未修改的文件用于快照。 保留对已修改文件的非暂存更改,但快照包含这些文件的未修改版本。 在暂存新文件之前,Git 不会跟踪对新文件的更改,也不会在快照中包含新文件。

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

提交中的内容

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

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

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 文件(如果该文件不存在),并向其中添加一个条目。 忽略的文件不会在 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。

后续步骤