git - 如何成功地将分支重新定位到包含分支的提交的(github)压缩提交?
问题描述
我现在很不幸,在工作中使用 github 和 github 流分支策略被卡住了。我不喜欢github。它有我见过的最糟糕的拉取请求实现,它的 CR 工具让我想吐,但这不是(主要)问题。
我们的分支历史目前看起来像这样:
A---B---E' main
\
C---D---E feature-1
\
F---G feature-2
Feature-2 是 Feature-1 的分支,并且 feature-1 已被合并到 main 中,但我现在看到的可能是在 github 中使用“Squash Merge”这样做的错误,因为它是github(呃)和其他团队都给了我指导。
现在,我们需要将 feature-2 重新定位到主线,因为 Github 否则会在 feature-2 PR 的更改中包含提交 C、D 和 E。
当我这样做时,我结束了:
A---B---E'---C'---D'---E'---F---G feature-2
\
main
是的。对于 C、D 和 E 中更改的每个文件,我都会遇到冲突,这只是 E'
.
所以无论如何,这是一个奇怪的痛苦,但是 rebase 是一个如此强大的工具,我相信有一种方法可以让它看起来像我想要的那样,那就是:
A---B---E'---F---G feature-2
\ \
\ main
C---D---E feature-1 (closed) (but not really, I'm still committing to it which will probably also come back and bite me...)
我已经尝试git rebase --onto main feature-1 feature-2
过 git-rebase 文档,当然只是git rebase main
, 以及git rebase --onto main
它只是改变了我的分支指向的位置而没有做任何事情(我不太了解--onto
)。
同样,如果您在使用“github 流”时有任何保持仓库清洁的提示(因为我认为如果我也进行了合并提交,这可能会发生,但也许不会?),请不要犹豫!多年来我一直在使用 git,但没有使用 github(它可能说明了我在哪里工作),而且我以前的知识并没有翻译。
解决方案
你需要像这样变基:
git rebase --onto main E feature2
E 是分支 feature1 的尖端,因为它在您的 feature2 分支中。
推荐阅读
- linux - SSH命令中的本地和远程变量如何在本地可用
- angularjs - 在角度控制器中使用文本角度函数?
- ruby - 调用 `super` 的时机
- java - 在 Windows 机器中连接到 postgress 数据库时出现异常
- asp.net-mvc - 在 javascript 文件中使用时,asp.net 翻译功能会为非英文字符提供垃圾字母
- python - 我从安装requirement.txt 后尝试运行应用程序?
- r - 如何在csv文件中查找特定数据
- python - 如何在新环境中运行 spyder 3?
- javascript - Weblogic 服务器登录凭据传递到主页以重复使用
- c - 如何使用 C API 为创建的 .skp 文件设置图标?