如何轻松地将更改从主分支拉入功能分支

问题描述 投票:0回答:2

我的业务案例:我们是 3 名测试人员,正在处理存储在

Main
分支中的通用代码库。

上周,我开始通过创建一个功能分支来进行新测试

Main

然而,在我创建 PR 之前,其他 2 名测试人员推送了他们的更改并合并到

Main
分支中。

现在我的问题是我的功能分支不再与

Main
分支同步。如何从
Main
将最新更改拉入功能?

Git fetch
Git pull
没有更新我的功能分支,它只更新了我的本地主分支,但我的本地功能分支仍然没有更新主分支的最新更改。

如何使用 INTELLIJ IDE Ultimate 中主分支的最新副本重新调整本地功能分支的基础。

选择“接受我的更改”或“接受他们的更改”时,我感到很困惑。 我这样做的时候弄乱了我的分支....

如何从最新的 master 副本更新我的功能分支而不丢失本地更改。

请指导我

git azure azure-devops merge rebase
2个回答
0
投票

分步说明:

  1. 从远程存储库获取最新更改 打开 IntelliJ IDEA。

导航到

VCS > Git > Fetch
从远程存储库获取最新更改。

  1. 检查您的功能分支 在 IntelliJ IDEA 的右下角,单击分支名称以打开“分支”弹出窗口。

选择您的功能分支并选择“结账”。

  1. 将您的功能分支重新设置为最新的主分支 导航至

    VCS > Git > Rebase
    。 选择将当前分支重新定基.... 在出现的对话框中,选择主分支(例如 origin/main)作为目标分支,然后单击 Rebase。

  2. 解决冲突(如果有冲突)

对于每个冲突,请使用 IntelliJ IDEA 提供的 diff 查看器:

接受您的(接受我的更改): 保留您的更改并丢弃来自主分支的传入更改。

接受他们的(接受他们的更改): 保留主分支的更改并放弃您的更改。

合并:允许您通过编辑文件来手动合并更改。 解决每个冲突后,通过单击差异查看器右上角的“标记为已解决”按钮将文件标记为已解决。

  1. 继续变基:

解决所有冲突后,继续变基过程。 转到

VCS > Git > Rebase
,然后选择继续重新设定基准。

  1. 推送 Rebased 功能分支:

成功变基并解决冲突后,将功能分支推送到远程存储库。 前往

VCS > Git > Push

在“推送”对话框中,确保推送您的功能分支。 使用

--force-with-lease
选项可确保您不会覆盖其他人可能已推送的任何更改。


0
投票

建议使用拉取请求合并冲突扩展来解决拉取请求上的合并冲突:

  1. 拉取请求合并冲突扩展安装到您的 Azure DevOps 组织/收集。

  2. 在 Azure DevOps 中提交更改并将其推送到远程

    feature
    分支后,创建 PR(拉取请求)以将更改从
    feature
    合并到
    main

  3. 如果双方(

    feature
    main
    )都修改了某些文件,在PR的Overview上,您可以看到报告的“
    merge conflicts
    ”错误和列表冲突的文件。在这种情况下,您无法完成 PR 合并。

    enter image description here

  4. 转到冲突选项卡手动解决每个文件中的冲突。

    • 如果您只想保留来自
      feature
      分支的更新,请选择选项“
      Keep Whole Source (left) File
      ”。
    • 如果您只想保留来自
      main
      分支的更新,请选择选项“
      Keep Whole Target (right) File
      ”。
    • 如果您想保留双方的某些更新,可以手动调整冲突的内容,然后点击“
      Submit Merge
      ”提交调整后的内容。

    enter image description here

  5. 解决所有文件的冲突后,转到概览,可以看到“

    merge conflicts
    ”错误消失,并显示“
    No merge conflicts
    ”消息。这时候就可以正常完成PR合并了。

    enter image description here


© www.soinside.com 2019 - 2024. All rights reserved.