Azure Git:如何不 select 一些文件进行合并

Azure Git: How not to select some files for merge

我正在与 Azure DevOps Git 合作。我有一个包含 2 个分支 DevelopmentRelease 的 repo。我在 Release 分支中做了 5 处更改,所有更改都在不同的文件夹中,都在不同的提交中。现在我只需要将这些更改中的 3 个合并到 Development 分支,即这些更改中的 2 个不应合并到 Development 分支中。我该怎么做?

在 Azure 网页中,我转到我的存储库,单击 Pull requests link 打开它,然后单击 New Pull request 按钮开始创建新的拉取请求。然后对于源分支 I select Release 分支,对于目标分支 I select Development 分支。它的文件选项卡显示 5 个文件。但我没有看到任何选项不 select 其中任何一个。

Pranav Singh 的评论将是最好的选择,cherry-picking。创建 PR 时,您正在将一个分支合并到另一个分支中。如果您只想合并部分更改,我会基于默认分支创建一个新分支,然后将更改挑选到该新分支中。您不想从一个分支中挑选到默认分支,因为这违背了 PR 的目的。

https://git-scm.com/docs/git-cherry-pick 原始 git 手册是很好的资源,但有时很难通读。

有时在这里阅读更容易 https://www.atlassian.com/git/tutorials/cherry-pick

我还要说的是,一旦完成 PR,请确保将默认分支合并或变基到原始分支(您从中挑选的分支)。这样,如果它导致任何合并冲突,您可以尽快解决它们。

如果您永远不想在 Development 中进行这些更改,您可以还原这两个特定更改,然后将其合并到 Development 中:

在您的本地存储库中:

  • 来自 Release 分支

  • 创建一个新分支(取个名字,我就叫它wip

  • 在此分支上,还原您要跳过的两个提交:

     git revert <hash of commit1>
     git revert <hash of commit2>
    
  • 将此分支推送到 devops :

     git push -u origin wip
    

在 DevOps 上:

  • 创建一个新的合并请求,要求将 wip 合并到 Development