Visual Studio+Azure DevOps仓库:恢复旧变更集未影响挂起变更
解决Azure DevOps与Visual Studio 2019的版本回退相关问题
a) 让旧版本文件显示在「Pending Changes」中
直接通过「Advanced」菜单获取特定变更集只会覆盖本地文件,但不会自动将差异标记为待提交变更。你可以这么操作:
- 在Visual Studio的「Pending Changes」面板顶部,点击「Detect Local Changes」按钮(带箭头的刷新图标),VS会自动对比本地文件与服务器最新版本的差异,把你获取的旧版本文件识别为变更并显示在待提交列表里。
- 如果上述方法没生效,可手动操作:找到目标文件,右键选择「Compare」→「Compare with Latest Version」,确认旧版本内容后,用旧版本覆盖当前文件,该文件会自动出现在「Pending Changes」中。
b) 删除自目标变更集之后的所有变更集
Azure DevOps不支持直接删除已提交的变更集(会破坏版本历史完整性),但可以通过反向合并抵消这些变更的影响:
- 打开Team Explorer→「Branches」,找到当前工作分支,右键选择「Merge」。
- 在合并窗口中,选择「Selected changesets」,勾选目标变更集之后的6-7个变更集。
- 勾选窗口底部的「Reverse merge」选项,点击「Merge」。
- 遇到冲突时,手动选择保留目标变更集的文件版本(放弃后面变更集的修改),逐个解决后完成合并,最后提交这个反向合并的变更即可。
c) 将旧变更集「promote」至「head」
本质是让旧变更集的内容成为分支的最新版本,有两种可行方式:
- 方式一:直接回滚到目标变更集
在Team Explorer中,右键当前分支→「Rollback」,选择「Rollback to a specific changeset」并输入目标变更集号。遇到冲突时,手动选择保留目标变更集的版本内容,解决完冲突后提交回滚变更,此时分支的最新状态就和目标变更集一致。 - 方式二:基于旧变更集建新分支合并
- 从目标变更集创建新分支:在「Branches」面板右键目标分支→「New Branch」,在「Version」选项中选择「Specific changeset」并输入目标变更集号,完成分支创建。
- 将新分支合并回原分支:右键原分支→「Merge」,选择刚创建的新分支作为源分支,合并时解决冲突并保留新分支(旧变更集)的内容,提交后原分支的head就会更新为旧变更集的内容。
关于rollback冲突的说明
你遇到的「conflicting versions」错误,是因为后续变更集和目标变更集修改了相同文件,这类冲突无法自动解决,必须手动逐个文件对比,选择保留目标变更集的版本内容即可。
内容的提问来源于stack exchange,提问作者JosephDoggie
相关产品推荐
相关产品推荐

