„;浮动“;用git提交
在我们的一个项目中,像往常一样,我们有一个主分支。在此基础上是部署分支,在其中修改设置。基于此,还有一个运行部署镜像的镜像分支。主分支不应包含任何更改配置的修补程序 镜像分支中开发了一些小功能和修复。因此,在添加一个功能后,它看起来如下所示:„;浮动“;用git提交,git,merge,rebase,Git,Merge,Rebase,在我们的一个项目中,像往常一样,我们有一个主分支。在此基础上是部署分支,在其中修改设置。基于此,还有一个运行部署镜像的镜像分支。主分支不应包含任何更改配置的修补程序 镜像分支中开发了一些小功能和修复。因此,在添加一个功能后,它看起来如下所示: master: history ┐ deployment: ├─ deployment-config mirror: └─ mirror-config ── feature 现在,要将该功能移回mas
master: history ┐
deployment: ├─ deployment-config
mirror: └─ mirror-config ── feature
现在,要将该功能移回master,首先必须对镜像分支中的面片重新排序:
master: history ┐
deployment: ├─ deployment-config
mirror: └─ feature ── mirror-config
现在我可以快进合并到主
master: history ┬─ feature ┐
mirror: │ └─ mirror-config
deployment: └─ deployment-config
master: history ── feature ┐
mirror: ├─ mirror-config
deployment: └─ deployment-config
然后将母版合并到镜像中,并将其重新定位到母版上
master: history ┬─ feature ┐
mirror: │ └─ mirror-config
deployment: └─ deployment-config
master: history ── feature ┐
mirror: ├─ mirror-config
deployment: └─ deployment-config
是否有一个插件或工具可以自动实现这一点,以便
- 每一次新的提交都会自动应用于顶部提交的“下方”
- 每个合并或樱桃选择也会自动应用在顶部提交的“下方”
- 来自这样一个分支的合并从顶部提交的“下方”状态提取
git rebase-i--autosquash
,它可以根据提交消息为您重新排序/挤压提交:
如果您知道要将某个内容压缩到哪个提交中,则可以通过“squash!$other\u commit\u subject
”消息进行提交
然后,如果运行git rebase--interactive--autosquash commitish
,该行将自动设置为squash
,并放置在主题为$other\u commit\u subject
的提交下方
(更多详情请参阅“”的第二部分)
这可能有助于将“功能”提交重新排序在一起,特别是当“功能”和“镜像配置”提交混合在一起时
重新排序后,rebase--on
可以将这些功能合并移到右侧分支。例如见“”
除此之外,我不知道有任何插件可以自动执行这些任务:这里有关于git rebase的所有内容,一般来说,我建议您尝试摆脱配置提交的情况。您不能只在部署中存储配置吗?或者使用污迹过滤器,正如我在这里解释的: 如果这不是一个选项,让我回答你的问题,因为有更简单的方法来实现你想要的,因为git中的分支非常轻量级。这些都不是完全自动化的,但是非常简单,你可以为此编写一些小脚本 每一次新的提交都会自动应用到顶部提交的“下方” 不太确定情况,但假设您进行了更改并希望提交:
git重置——硬头^
stash pop
reset--hard
,做好你的工作,樱桃摘老树枝头
来自这样一个分支的合并从顶部提交的“下方”状态提取?
这个很简单:git merge mybranch^
如果您不想更改工作目录,并且“配置提交”修改的文件不受其他操作的影响,则可以执行以下操作:
git复位头^
git更新索引使git忽略您的配置文件——假设未更改
git update index--no-assessed unchanged
如果您通过脚本自动执行此操作,则可以使用git通过查看配置提交来获取
的配置文件列表——假设未更改。如果您不想自动执行此操作,可以跳过步骤3和5,只需确保在步骤4中不提交配置文件即可。为什么要在镜像分支上开发?使用第三个分支(或干脆掌握)你可以考虑镜像分支是一个开发分支。关键是不能使用主控,因为没有配置补丁,程序不能工作。无论如何,有用的建议。我仍然不喜欢这些临时修改我的工作目录,例如在<代码> Git重置-硬< /代码>,但它是一个好的ST。艺术。很好地使用git重置,比我的答案更简单。+1你看了我的污迹过滤器链接吗?这将是我的明确建议。否则,核心问题是你是否要提交对配置文件的更改。我更新了我的答案,提供了一个不修改你的工作目录的解决方案的详细信息。但请注意,git rebase
也将临时更改您的工作目录,因此您已经这样做了。很好,我非常喜欢已编辑的解决方案在内部的工作方式。UI仍然缺乏,但在您编写时,这应该可以通过自动化来解决。谢谢!很高兴我能提供帮助。“UI仍然缺乏”–git:)