如何创建具有正确 Git 差异的三级特征分支

How to Create a Tertiary Feature Branch With a Correct Git Diff

如果我想在 master 之外创建一个新的功能分支,我可以这样做:

$ git checkout master
$ git checkout -b myFirstFeature

但假设我现在在等待合并的 PR 中有该分支,并且我想处理其他依赖于该分支中的更改的事情。在那种情况下,我可能会通过以下方式创建一个三级分支:

$ git checkout myFirstFeature
$ git checkout -b mySecondFeature

所以现在我已将 myFirstFeature 设置为 mySecondFeature 的上游,我可以访问那里的所有更改并可以开始构建它们,这正是我想要的。不错!

但是,问题是当我为 mySecondFeature 提交 PR 时,Git 包含了 myFirstBranch 中的所有更改mySecondFeature 的差异,而不仅仅是我实际承诺的 mySecondFeature.

它甚至包括我拉取 master 时产生的更改,即在 myFirstFeature 期间合并的任何其他 PR 已经存在。

所以现在 mySecondFeature 在 GitHub 上有大约 200 个文件的差异,尽管我个人只在那个分支上编辑了 3 或 4 个文件。

我怎样才能实现我的目标,即从现有的未合并的功能分支中创建一个新的第三功能分支,而不会完全破坏我的 git 差异?

谢谢!

从请求合并 mySecondFeaturemyFirstFeature 的 PR 开始。

myFirstFeature 合并到 master 后,将该 PR 的目标分支更新为 master

解决方法如下:

git checkout master

git checkout -b new_branch(新建分支)

git merge --squash old_branch(在依赖特性分支中合并)

如果你第一次做错了,现在在另一个分支上工作,你想把它拉到 new-branch,做:

git cherry-pick <oldest_commit>^..<newest_commit>