Azure DevOps Services |Azure DevOps Server 2022 - Azure DevOps Server 2019 |TFS 2018
Visual Studio 2019 |Visual Studio 2022
如果项目有多个参与者,请通过下载并集成其他人上传到项目的远程存储库的工作来更新本地 Git 存储库。 这些 Git 命令更新本地存储库:
Git
提取
下载其他人上传到远程存储库的任何新提交。 更新本地存储库缓存中的远程跟踪分支 - 本地分支保持不变。
Git
合并
将一个或多个源分支的提交集成到目标分支中。
Git
存储库
将源分支中的提交集成到目标分支中,但使用与 Git 合并不同的策略。
Git
拉取
执行提取,然后执行合并或重新数据库,将提取的提交集成到当前本地分支中。
将本地存储库与远程存储库
同步
时,Visual Studio 会使用这些 Git 命令的子集。
有关 Git 工作流的概述,请参阅
Azure Repos Git 教程
。
本文提供以下任务的过程:
下载包含
提取
的更改
使用
合并
或
存储库
更新分支
使用
拉取
下载更改和更新分支
下载包含提取的更改
Git 提取下载本地存储库中不存在的远程分支提交和引用的文件对象,并更新本地存储库缓存中的
远程跟踪
分支。 远程跟踪分支是远程分支的本地缓存只读副本,不是本地分支。 Git 提取不会更新本地分支。 例如,如果由
origin
分支
bugfix3
指定的远程存储库,Git 提取将更新名为而不是
origin/bugfix3
本地
bugfix3
分支的远程跟踪分支。 可以使用远程跟踪分支来:
将远程跟踪分支与本地分支进行比较,以查看提取的更改。
将远程跟踪分支合并到本地分支。
从远程跟踪分支创建新的本地分支。
Visual Studio 2022 通过使用 Git 菜单、
Git 更改
以及
解决方案资源管理器
中的上下文菜单提供
Git
版本控制体验。 Visual Studio 2019 版本 16.8 还提供
团队资源管理器
Git 用户界面。 有关详细信息,请参阅
Visual Studio 2019 - 团队资源管理器
选项卡。
在
“Git 更改
”窗口中,选择“
提取
”。 然后选择
传出/传入
以打开
Git 存储库
窗口。
还可以从 Git 菜单中选择
“提取
”。
在
“Git 存储库
”窗口中,提取的提交将显示在
“传入
”部分中。 选择提取的提交以查看该提交中已更改的文件的列表。 选择已更改的文件以查看已更改内容的差异视图。
提取
不会删除本地存储库缓存中不再具有远程对应项的远程跟踪分支。 若要在
Fetch
期间将 Visual Studio 配置为
修剪
过时的远程跟踪分支,请执行以下操作:
选择
工具
>
选项
>
源代码管理
>
Git 全局设置
。
将
提取选项期间的 Prune 远程分支
设置为
True
。
Visual Studio 2019 通过使用 Git 菜单、
Git 更改
以及
解决方案资源管理器
中的上下文菜单提供
Git
版本控制体验。
在
“Git 更改
”窗口中,选择“
提取
”。 然后选择
传出/传入
以打开
Git 存储库
窗口。
还可以从 Git 菜单中选择
“提取
”。
在
“Git 存储库
”窗口中,提取的提交将显示在
“传入
”部分中。 选择提取的提交以查看该提交中已更改的文件的列表。 选择已更改的文件以查看已更改内容的差异视图。
提取
不会删除本地存储库缓存中不再具有远程对应项的远程跟踪分支。 若要在
Fetch
期间将 Visual Studio 配置为
修剪
过时的远程跟踪分支,请执行以下操作:
选择
工具
>
选项
>
源代码管理
>
Git 全局设置
。
将
提取选项期间的 Prune 远程分支
设置为
True
。
Visual Studio 2019 版本 16.8 及更高版本提供 Git 版本控制体验,同时维护
团队资源管理器
Git 用户界面。 若要使用
团队资源管理器
,请从菜单栏中取消选中
“工具
>
选项
>
预览功能
”新增
> Git 用户体验。 可以从任一接口互换使用 Git 功能。
在
团队资源管理器
中,选择
“开始
”,然后选择“
同步
”以打开
“同步
”视图。
在
“同步
”视图中,选择“
提取
”。 两个
“提取
”按钮执行相同的操作。 下载后,提取的提交将显示在
“传入提交”
部分中。
在
“传入提交”
部分中,右键单击提交,然后选择
“查看提交详细信息”
以查看已更改的文件。
在“
提交详细信息
”窗口中,更改的文件列在
“更改
”部分中。
双击已更改的文件以打开已更改内容的差异视图。
提取
不会删除本地存储库缓存中不再具有远程对应项的远程跟踪分支。 若要在
Fetch
期间将 Visual Studio 配置为
修剪
过时的远程跟踪分支,请执行以下操作:
选择
工具
>
选项
>
源代码管理
>
Git 全局设置
。
将
提取选项期间的 Prune 远程分支
设置为
True
。
git fetch <remote repo>
克隆远程存储库时,Git 会将别名 origin
指定为克隆的远程存储库的 URL 的速记。 运行 git remote -v
以检查 origin
别名值。 若要手动添加 origin
别名,请运行 git remote add origin <remote repo url>
。 使用 origin
别名,可以简化 Git 提取命令,以便:
git fetch
有关 Git 提取选项的详细信息,请参阅 Git 参考手册。
默认情况下,Git 提取不会删除本地存储库缓存中不再具有远程跟踪分支的分支。 若要删除过时的远程跟踪分支,请使用 --prune
标志运行 Git 提取,或在 Git 提取期间将 Git 配置为修剪远程跟踪分支 。
获取 Git 后,可以将本地分支与其相应的远程跟踪分支进行比较,以查看远程分支上的更改。 如果决定使用提取的更改更新当前本地分支,则可以执行 Git 合并 或 重新数据库。 或者,可以运行 Git 拉取,它将 Git 提取与 Git 合并或存储库组合在一起。 Git 合并和 Git 存储库都通过将源分支中的提交应用到目标分支来更新目标分支。 但是,Git 合并和 Git 存储库使用不同的策略。 有关详细信息,请参阅 使用合并或重新数据库更新分支 以及 何时重新定基与合并。
使用合并或存储库更新分支
Git 合并和 Git 存储库将源分支中的提交集成到当前本地分支 (目标分支) 。 Git 合并 执行 快速转发 或 无快速转发 合并。 无快进合并也称为 三向 合并或 true 合并。 Git 存储库 是另一种类型的合并。 下图显示了这些合并类型。
Git 合并 和 Git 存储库 在 Git 工作流中广泛使用。 处理本地功能或 bugfix 分支时,通常做法是:
定期拉取和合并远程提交,使本地main
分支保持最新状态。
使用存储库或合并将本地 main
分支更新集成到本地功能分支中。
通过将工作 推送 到相应的远程分支,在本地功能分支上备份工作。
在功能完成时,创建 拉取请求 ,将远程功能分支合并到远程 main
分支中。
此方法可帮助你:
请随时了解可能影响工作的其他人员的最新工作。
及时解决你的工作与其他人之间的任何冲突。
在最新项目内容的基础上应用新功能。
获取 对工作的拉取请求 评审。
对于 Git 合并,如果源分支中存在目标分支的提示,则默认合并类型将是快速转发合并。 否则,默认合并类型将是无快速转发合并。
如果目标分支的提示与源分支不同, 则快速转发 Git 合并永远不能发生 合并冲突 ,因为 Git 不会应用快速转发合并。 默认情况下,Git 尽可能使用快速转发合并。 例如,Git 将在仅通过从远程对应分支拉取来更新的本地分支上应用快速转发合并。
无快速转发 Git 合并生成新的目标分支“合并提交”,该分支将源分支更改与目标分支更改集成。 适用的更改是在对两个分支通用的最后一次提交之后进行的更改。 在上图中,提交 C 是两个分支中的最后一个常见提交。 如果任何源分支更改与任何目标分支更改冲突,Git 将提示你解决合并冲突。 合并提交 (L) 包含集成的源分支和目标分支更改。 源和目标分支提示 (K 和 E) 是合并提交的父级。 在分支的 提交历史记录中,合并提交是合并操作的有用标记,并清楚地显示合并了哪些分支。
Git 合并仅修改目标分支 , 源分支保持不变。 遇到一个或多个合并冲突时,必须解决这些问题才能完成合并。 或者,可以取消合并操作,并将目标分支返回到其以前的状态。
有关合并选项和策略的详细信息,请参阅 Git 参考手册 和 Git 合并策略。
如果源分支是远程跟踪分支,请确保在合并之前运行 Git 提取 ,确保分支是最新的。
git merge <source branch name>
Git 会在合并期间发生冲突时通知你。 可以 解决冲突 ,然后运行 git merge --continue
,也可以运行 git merge --abort
以撤消合并并返回到合并前状态。
Git 重新设定 目标分支的提交历史记录,使其包含所有源分支提交,后跟自上次通用提交以来的所有目标分支提交。 另一种查看方法是,Git 存储库在源分支历史记录顶部重播目标分支中的更改。 如果任何源分支更改与任何目标分支更改冲突,Git 将提示你解决合并冲突。 Git 存储库不会创建合并提交。 值得注意的是,Git 重新基会更改现有目标分支提交的顺序,而其他合并策略的情况并非如此。 在上 图中,提交 K 包含与 K 相同的更改,但具有新的提交 ID,因为它链接回提交 E 而不是 C。
Git 存储库仅修改目标分支,源分支保持不变。 遇到一个或多个合并冲突时,必须解决这些问题才能完成重定基。 或者,可以取消重新基操作,并将目标分支返回到其以前的状态。
如果你是唯一处理功能或 bugfix 分支的人员,请考虑使用 Git 存储库将新 main
分支提交集成到其中。 否则,请使用 Git 合并。 有关 Git 存储库以及何时使用它的详细信息,请参阅使用 rebase 和 Rebase 与合并应用更改。
如果源分支是远程跟踪分支,请确保分支在重新基地之前运行 Git 提取 是最新的。
使用拉取下载更改和更新分支
默认情况下,Git 拉取将 Git 提取 和 Git 合并合并 ,以便从其远程分支更新当前本地分支。 (可选)Git 拉取可以执行 Git 存储库 ,而不是 Git 合并。
与 Git 提取不同,Git 拉取将在从远程存储库下载新提交后立即更新当前本地分支。 知道想要在 Git 提取后立即更新当前本地分支时,请使用 Git 拉取。
若要在 拉取时将 Visual Studio 配置为重新基而不是合并,
从 Git 菜单中,转到 “工具>选项”>源代码管理>Git 全局设置。
将拉取选项设置为True
时设置 Rebase 本地分支。
git pull <remote repo>
克隆远程存储库时,Git 会将别名 origin
指定为克隆的远程存储库的 URL 的速记。 运行 git remote -v
以检查 origin
别名值。 若要手动添加 origin
别名,请运行 git remote add origin <remote repo url>
。 origin
使用别名,可以进一步简化 Git 拉取命令,以便:
git pull
若要使用存储库策略将远程分支中的提交集成到当前工作分支中,请使用 --rebase
标志运行 Git 拉取命令。 有关 Git 拉取选项的详细信息,请参阅 Git 参考手册。
Git 会在 Git 拉取操作的合并/重新基部分发生冲突时通知你。 然后,可以解决冲突,然后运行git merge --continue
或git rebase --continue
运行或git rebase --abort
撤消git merge --abort
合并/重新基。
通过推送解决合并冲突共享代码
Git 存储库新增功能? 了解详细信息