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

Visual Studio 2022 |Visual Studio 2019 |Visual Studio 2017 |Visual Studio 2015

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

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

  • Git 如何跟踪更改
  • 如何暂存更改
  • 如何创建提交
  • 如何更新上次提交
  • 有关 Git 工作流的概述,请参阅 Azure Repos Git 教程

    Git 如何跟踪更改

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

  • 未修改的文件 - 自上次提交以来尚未更改的文件。
  • 已修改的文件 - 自上次提交以来已更改的文件,但尚未暂存下一个提交。
  • 暂存文件 - 自上次提交以来已更改的文件,并暂存下一个提交。
  • 创建提交时,只对快照使用暂存文件和未修改的文件。 保留对已修改文件的未标记更改,但快照包含这些文件的未修改版本。 Git 不会跟踪对新文件的更改,也不会在快照中包含新文件,直到暂存它们。

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

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

  • 提交时存储库中所有跟踪的文件的快照。 尽管 Git 使用快照来计算差异,但快照并不是提交之间的差异。 快照支持在 分支 之间快速切换,并支持 合并 分支。
  • 对父提交的引用。 大多数提交都有一个父级,但在分支合并后下一个提交具有多个父级,存储库中的第一个提交没有。
  • 描述提交中的更改的消息。 创建提交时输入消息。
  • Git 使用每个提交的快照和父引用 () 来维护存储库中开发的完整记录。 若要调查代码中的更改,可以查看存储库的 Git 历史记录

    如何暂存更改

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

  • 暂存 新文件 ,让 Git 知道要将它们添加到快照中,并希望 Git 跟踪这些文件的更改。
  • 存已编辑的文件 ,以告知 Git 想要快照中修改的文件版本,而不是未修改的文件版本。
  • 暂存 已删除的文件 ,让 Git 知道你希望从快照中删除这些文件,并且不再跟踪这些文件。
  • 若要从快照中排除临时文件、日志文件或其他文件,可以将 Git 配置为 忽略特定文件

    Git 支持已编辑文件的交互式暂存,因此可以选择在文件中暂存特定更改。 当你希望在不同的提交中编辑不同的文件时,这是一项有用的功能。

    Visual Studio 2019 版本 16.8 及更高版本提供 Git 版本控制体验,同时维护 团队资源管理器 Git 用户界面。 若要使用 团队资源管理器 ,请从菜单栏中取消选中 “工具 > 选项 > 预览功能 > ”新增 Git 用户体验 。 可以从任一接口互换使用 Git 功能。 下面提供了有关如何暂存文件更改的并行比较。

    Visual Studio Git

  • “Git 更改 ”窗口中,右键单击“ 更改 ”部分中的文件,然后选择 “暂 存”以将其添加到 “暂存更改 ”部分。
  • 或者,可以通过选择文件旁边的加号来暂存已更改的文件。 若要暂存文件夹中所有已更改的文件,请选择文件夹旁边的加号。 若要暂存存储库中的所有已更改文件,请选择 “更改 ”部分右上角的加号。

    Visual Studio 团队资源管理器

  • 团队资源管理器中 ,选择“ 开始 ”按钮,然后选择“ 更改 ”。
  • 或者,可以通过将其从 “更改 ”部分拖动到 “暂存更改 ”部分来暂存已更改的文件。 若要暂存文件夹中所有已更改的文件,请右键单击该文件夹,然后选择 “暂存 ”。 若要暂存存储库中的所有已更改文件,请选择 “更改 ”部分右上角的加号。

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

    Visual Studio 2019 不支持在文件中暂存部分更改。 Visual Studio 2022 引入了此功能。

    Visual Studio 2019 版本 16.8 及更高版本提供了一个新的 Git 菜单,用于管理 Git 工作流的上下文切换比团队资源管理器少。 Visual Studio 2019 选项卡下本文中提供的过程提供有关使用 Git 体验以及团队资源管理器的信息。 若要了解详细信息,请参阅 Git 和团队资源管理器的并行比较

    Visual Studio 在完成工作时跟踪项目的文件更改。 准备好暂存更改后,请在团队资源管理器中打开 “更改 ”视图。

    通过右键单击 “更改 ”视图中的文件并选择 “阶段 ”来暂存单个文件更改。 暂存更改会在团队资源管理器中创建 分阶段更改 部分。 只有 “暂存更改 ”部分的更改才会添加到下一个提交中。

    Visual Studio 2015 Update 2 之前,团队资源管理器 更改 视图包含 文件和 排除的文件 部分。 Visual Studio 2015 Update 2 中更新了 “更改” 视图,以便更好地与其他 Git 工具兼容。

    通过选择多个文件或文件夹,然后右键单击并选择 “暂存 ”或将文件从 “更改 ”列表中拖放到 “暂存的更改 ”列表中来暂存多个文件或文件夹。

    右键单击并选择“ 忽略此本地项 ”或 “忽略此扩展名 ”来忽略文件。 这会将条目添加到本地存储库中的 .gitignore 文件。 如果在之前提交中将忽略的文件添加到存储库中,则忽略该文件不会将其从 “更改” 列表中删除。 有关如何忽略 Git 已跟踪的文件的详细信息,请参阅 “排除和忽略文件”部分

    若要暂存自上次提交以来更改的存储库中所有跟踪和未跟踪的文件,请使用 git add 带有标志的 --all 命令。 但是, --all 标志不会暂存已将 Git 配置为 忽略 的文件。

    git add --all
    

    可以使用以下命令暂存对特定文件的更改。

    git add <file path>
    

    可以使用此选项 以交互方式暂存 已更改文件 --patch 的各个部分。

    git add --patch <file path>
    

    其他相关的 Git 命令包括:

  • git rm 以删除存储库中的文件并暂存更改。
  • git mv 在存储库中移动或重命名文件并暂存更改。
  • git status 查看存储库中更改的当前状态。
  • 有关这些命令的详细信息,请参阅 教程命令参考Git 命令行参考

    暂存文件后,通过运行 git status查看暂存和未标记的更改。

    如何创建提交

    Visual Studio 2019 Visual Studio 2017 & 更早版本 Git 命令行

    Visual Studio 2019 版本 16.8 及更高版本提供 Git 版本控制体验,同时维护 团队资源管理器 Git 用户界面。 若要使用 团队资源管理器,请从菜单栏中取消选中 “工具>选项>预览功能>”新增 Git 用户体验 。 可以从任一接口互换使用 Git 功能。 下面提供了有关如何创建提交的并行比较。

    Visual Studio Git

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

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

    Visual Studio 2019 版本 16.8 及更高版本提供了一个新的 Git 菜单,用于管理 Git 工作流的上下文切换比团队资源管理器少。 Visual Studio 2019 选项卡下本文中提供的过程提供有关使用 Git 体验以及团队资源管理器的信息。 若要了解详细信息,请参阅 Git 和团队资源管理器的并行比较

    在团队资源管理器中打开 “更改 ”视图。

    输入描述更改的提交消息,然后选择 “提交暂存 ”以创建新提交,其中包含“ 暂存更改 ”部分中列出的更改。

    如果只想通过输入提交消息并选择 “全部提交 ”(如果尚未暂存更改)来提交列出的所有更改,请跳过暂存文件。

    在 Visual Studio 中提交时,可以 推送 提交并将分支 远程存储库同步。 这些选项在 “提交 ”按钮的下拉列表中可用。

    可以使用带有标志的-m命令创建提交git commit,以指定提交消息。 如果未提供提交消息,Git 会打开编辑器,以便提供一个编辑器。

    git commit -m "<commit message>"
    

    在提交之前,请运行 git status查看暂存和未标记的更改。

    如何更新上次提交

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

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

  • 创建并推送另一个提交,以修复先前提交引起的问题。
  • 撤消推送的先前提交,方法是 git revert 创建一个新提交, 以还原 之前提交所做的所有更改。 然后推送新提交。
  • Visual Studio 2019 版本 16.8 及更高版本提供 Git 版本控制体验,同时维护 团队资源管理器 Git 用户界面。 若要使用 团队资源管理器,请从菜单栏中取消选中 “工具>选项>预览功能>”新增 Git 用户体验 。 可以从任一接口互换使用 Git 功能。 下面,我们并行比较了如何修改提交。

    Visual Studio Git

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

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

    Visual Studio 团队资源管理器

    团队资源管理器“更改”视图中,暂存一个或多个文件,输入提交消息,然后选择“操作>修改以前的提交”。

    团队资源管理器 不支持修改提交消息,也不支持修改一个或多个暂存文件。