„;浮动“;用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中的分支非常轻量级。这些都不是完全自动化的,但是非常简单,你可以为此编写一些小脚本

每一次新的提交都会自动应用到顶部提交的“下方” 不太确定情况,但假设您进行了更改并希望提交:

  • 还记得你现在的分公司负责人的SHA吗
  • 把零钱藏起来
  • git重置——硬头^
  • stash pop
  • 承诺
  • 樱桃摘你的旧树枝头
  • 每个合并或樱桃选择也会自动应用在顶部提交的“下方” 同上:
    reset--hard
    ,做好你的工作,樱桃摘老树枝头

    来自这样一个分支的合并从顶部提交的“下方”状态提取? 这个很简单:
    git merge mybranch^


    如果您不想更改工作目录,并且“配置提交”修改的文件不受其他操作的影响,则可以执行以下操作:

  • 记住你现在的分公司负责人的SHA
  • 进行软复位:
    git复位头^
  • 通过
    git更新索引使git忽略您的配置文件——假设未更改
  • 创建您的提交
  • 为您的配置文件运行
    git update index--no-assessed unchanged
  • 再次提交–这将重新创建配置文件

  • 如果您通过脚本自动执行此操作,则可以使用git通过查看配置提交来获取
    的配置文件列表——假设未更改
    。如果您不想自动执行此操作,可以跳过步骤3和5,只需确保在步骤4中不提交配置文件即可。

    为什么要在镜像分支上开发?使用第三个分支(或干脆掌握)你可以考虑镜像分支是一个开发分支。关键是不能使用主控,因为没有配置补丁,程序不能工作。无论如何,有用的建议。我仍然不喜欢这些临时修改我的工作目录,例如在<代码> Git重置-硬< /代码>,但它是一个好的ST。艺术。很好地使用git重置,比我的答案更简单。+1你看了我的污迹过滤器链接吗?这将是我的明确建议。否则,核心问题是你是否要提交对配置文件的更改。我更新了我的答案,提供了一个不修改你的工作目录的解决方案的详细信息。但请注意,
    git rebase
    也将临时更改您的工作目录,因此您已经这样做了。很好,我非常喜欢已编辑的解决方案在内部的工作方式。UI仍然缺乏,但在您编写时,这应该可以通过自动化来解决。谢谢!很高兴我能提供帮助。“UI仍然缺乏”–git:)