我的业务案例:我们是 3 名测试人员,正在处理存储在
Main
分支中的通用代码库。
上周,我开始通过创建一个功能分支来进行新测试
Main
。
然而,在我创建 PR 之前,其他 2 名测试人员推送了他们的更改并合并到
Main
分支中。
现在我的问题是我的功能分支不再与
Main
分支同步。如何从 Main
将最新更改拉入功能?
Git fetch
或Git pull
没有更新我的功能分支,它只更新了我的本地主分支,但我的本地功能分支仍然没有更新主分支的最新更改。
如何使用 INTELLIJ IDE Ultimate 中主分支的最新副本重新调整本地功能分支的基础。
选择“接受我的更改”或“接受他们的更改”时,我感到很困惑。 我这样做的时候弄乱了我的分支....
如何从最新的 master 副本更新我的功能分支而不丢失本地更改。
请指导我
分步说明:
导航到
VCS > Git > Fetch
从远程存储库获取最新更改。
选择您的功能分支并选择“结账”。
将您的功能分支重新设置为最新的主分支 导航至
VCS > Git > Rebase
。
选择将当前分支重新定基....
在出现的对话框中,选择主分支(例如 origin/main)作为目标分支,然后单击 Rebase。
解决冲突(如果有冲突)
对于每个冲突,请使用 IntelliJ IDEA 提供的 diff 查看器:
接受您的(接受我的更改): 保留您的更改并丢弃来自主分支的传入更改。
接受他们的(接受他们的更改): 保留主分支的更改并放弃您的更改。
合并:允许您通过编辑文件来手动合并更改。 解决每个冲突后,通过单击差异查看器右上角的“标记为已解决”按钮将文件标记为已解决。
解决所有冲突后,继续变基过程。 转到
VCS > Git > Rebase
,然后选择继续重新设定基准。
成功变基并解决冲突后,将功能分支推送到远程存储库。 前往
VCS > Git > Push
。
在“推送”对话框中,确保推送您的功能分支。 使用
--force-with-lease
选项可确保您不会覆盖其他人可能已推送的任何更改。
建议使用拉取请求合并冲突扩展来解决拉取请求上的合并冲突:
将拉取请求合并冲突扩展安装到您的 Azure DevOps 组织/收集。
在 Azure DevOps 中提交更改并将其推送到远程
feature
分支后,创建 PR(拉取请求)以将更改从 feature
合并到 main
。
如果双方(
feature
和main
)都修改了某些文件,在PR的Overview上,您可以看到报告的“merge conflicts
”错误和列表冲突的文件。在这种情况下,您无法完成 PR 合并。
转到冲突选项卡手动解决每个文件中的冲突。
feature
分支的更新,请选择选项“Keep Whole Source (left) File
”。main
分支的更新,请选择选项“Keep Whole Target (right) File
”。Submit Merge
”提交调整后的内容。解决所有文件的冲突后,转到概览,可以看到“
merge conflicts
”错误消失,并显示“No merge conflicts
”消息。这时候就可以正常完成PR合并了。