如何cherry-pick和合并只有一个子从一个功能分支掌握

0

的问题

我有一个有趣的问题(至少给我。)

我有一个 master 分和一个 feature 分支,它已经分手,其方式从 master 一段时间以前。 另一个团队不断更新 master 支和我的团队仅仅是工作 feature 分支。

master 分包括一些变化,我的团队是不感兴趣。 我们只关心他们 app 文件夹,就是这样。 即使在 app 文件夹中,我们是不是对一切感兴趣,只有变化,我们认为,我们所需要的。 我们不是合并我们的 feature 分到他们的 master 因为有技术的堆变化,我们正在实施和我们唯一需要从他们的是他们的JavaScript code.

与此同时,我们也在改变的 feature 支的 app 文件夹。 所以在这 app 文件夹中,他们有一些变化,我们没有,我们有一些变化,他们没有。 我们希望保持我们的所有变化,但是仅仅挑选他们的一些变化。

我如何去关于合并他们的 master 支的 app 进入我们的文件夹 feature 支的 app 文件夹? 我已经研究小时,尝试了一些VS代码扩展到预览之间的差异的两个文件夹。 什么我找的是一个接口在那里我可以 接受 ,或 下降 的一切,来自 master 分的应用程序的文件夹。 虽然这是我的喜好,我是开放的任何建议,将解决这个问题。

这可能听起来像搞砸了局势,但是我的团队失去了一些成员在过去几个月和差异分支之间的增长越来越大的每个星期。 现在我们要解决这一次对所有。

谢谢你的帮助。

cherry-pick git merge
2021-11-24 00:41:33
2
1

什么我找的是一个接口在那里我可以接受或拒绝的一切,来自主分支的 app 文件夹

git checkout -p master app 是粗但是站在一个体面的机会的服务在这里。

如果那不是你展示足够决定你想要什么,下一个步骤是选择性合并

git diff --merge-base @ master -- app | git apply -3

这将偏是自动合并机械和留任何重叠或抵改变对你了如往常一样,或者你可以保存差异的文件和编辑它的味道之前将其应用如果你要小心。

2021-11-24 06:42:34
1

有两种方式来做到这一点。 更简单一个将保持的改变,但是放弃任何提交。 更复杂的一个将保留提交。

建议

两者的两种方法下讨论有可能造成合并的冲突和其他的头痛,特别是因为人们继续做出改变,在主分支。 此外,如果有变化的应用程序/文件夹在功能的分支,直接令申请可能会导致您的变化正在改写。

我强烈建议合并主分支到功能分支通过 git merge没有挤压. 鉴于发散你所提到的,有可能是合并冲突, 但这是确定。 合并的冲突做你想要什么:他们让你选择哪些变化的接受,以及它拒绝。

这就是说,这里有两种方法都类似于摘樱桃只有一个单一的文件夹。

备选案文1:放弃承诺,继续改变

这种方法是相当直接的,并且它使用一个组合 git diffgit apply:

git switch feature
git diff feature..master -- app | git apply --index

这将:

  • 切换到特征分(这是你用的变化)
  • 得到所有的修改主分支,即不在的功能的分支。
  • 过滤器的唯一的变化 app 目录
  • 申请更改过 git apply
  • 舞台的变化,通过增加他们的指数(这是什么 --index 选项)

唯一的缺点的这种方法是,它不会保存记录,或提交的信息。

从那里,你可以提交更改自己:

git commit -m "Apply changes made to master branch"

备选案文2:获得承诺和变化

这是一个比较复杂,它依赖于 git format-patch.

git switch feature
git format-patch --stdout feature..master -- app | git am

这将:

  • 切换到特征分支(其中只适用的变化)
  • 得到所有的修改主分支,即不在功能分支
  • 滤波器,通过仅仅改变 app 目录
  • 格式,这些一系列的补丁(含有提交信息,作者等)
  • 适用所有这些补丁令我

请注意,根据内容的变化,这可能导致失败的,只有解决。 (它只提醒你这个)

2021-11-24 21:55:27

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................