如何创建具有正确 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 差异?
谢谢!
从请求合并 mySecondFeature
到 myFirstFeature
的 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>
如果我想在 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 差异?
谢谢!
从请求合并 mySecondFeature
到 myFirstFeature
的 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>