使用提交保存工作
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 更改”窗口中,右键单击“更改”部分中的文件,然后选择“暂存”,将其添加到“暂存更改”部分。
或者,可以通过选择文件旁边的加号来暂存已更改的文件。 要暂存文件夹中所有已更改的文件,请选择文件夹旁边的加号。 要暂存存储库中所有已更改的文件,请选择“更改”部分右上角的加号。
可以通过右键单击文件并选择“忽略此本地项”或“忽略此扩展名”来告知 Git 忽略该文件。 这两个命令都会在存储库中创建一个 .gitignore 文件(如果该文件不存在),并向其中添加一个条目。 忽略的文件不会在 Visual Studio 的“更改”部分中显示。 但是,.gitignore 文件对跟踪文件没有影响。 有关如何将 Git 配置为忽略跟踪文件的信息,请参阅忽略文件。 为了节省时间,可以从 GitHub gitignore 存储库下载适用于各种开发环境的 .gitignore 模板。
注意
从 Visual Studio 2022 版本 17.3 开始,Visual Studio 支持暂存文件中的部分更改。 有关详细信息,请参阅在 Visual Studio 中暂存代码行。
如何创建提交
在“Git 更改”窗口中,输入描述暂存更改的消息,然后选择“提交已暂存内容”。
选择提交详细信息的提交链接。
如何更新上次提交
Git 支持更改上次提交的暂存文件或消息。 此操作会将上次提交替换为新提交,后者会合并两个提交中的暂存文件,并使用新的提交消息。 如果忘记暂存文件,或者上次提交消息有拼写错误,则修改提交非常有用。
警告
请勿修改已推送的提交,因为这会导致远程存储库出现同步问题。 对于已推送的提交,请使用以下策略之一:
- 创建并推送另一个提交,以修复由上一个提交引起的问题。
- 撤消推送的上一个提交,方法是使用
git revert
创建一个新提交,还原上一个提交进行的所有更改。 然后推送新提交。
在“Git 更改”窗口中,可以选择暂存一个或多个文件,输入提交消息,选择“修改”,然后选择“提交已暂存内容”。
“Git 更改”窗口支持修改提交消息和/或暂存文件。 选择“修改”时,会显示上一个提交的标识符 SHA。