git中的“ Floating”提交

Joa*_*ner 5 git merge rebase

像往常一样,在我们的项目中,我们有一个主分支。基于此的部署分支将在其中修改设置。基于此的还有运行部署镜像的镜像分支。master分支不应包含任何更改配置的补丁。

在mirror分支中开发了一些小的功能和修复程序。因此,添加功能后,它看起来像这样:

master:      history ?
deployment:          ?? deployment-config
mirror:              ?? mirror-config ?? feature
Run Code Online (Sandbox Code Playgroud)

现在,要将功能移回母版,我首先必须在mirror分支中对补丁进行重新排序:

master:      history ?
deployment:          ?? deployment-config
mirror:              ?? feature ?? mirror-config
Run Code Online (Sandbox Code Playgroud)

现在我可以将其快速合并到大师中

master:      history ?? feature ?
mirror:              ?          ?? mirror-config
deployment:          ?? deployment-config
Run Code Online (Sandbox Code Playgroud)

然后将master合并到mirror中,并将其重新部署到master上

master:      history ?? feature ?
mirror:                         ?? mirror-config
deployment:                     ?? deployment-config
Run Code Online (Sandbox Code Playgroud)

是否有可以使之自动化的插件或工具,因此

  • 每个新的提交都会在“最高”提交“下方”自动应用,
  • 每次合并或自动选择也会自动在最高提交“下方”应用,
  • 来自这样一个分支的合并是否从顶部提交“下方”的状态中拉出?

Chr*_*ial 4

一般来说,我建议尝试摆脱配置提交情况。\xe2\x80\x99 不能只将配置存储在部署中吗?或者使用污迹过滤器,正如我在这里解释的:https ://stackoverflow.com/a/13616911/758345

\n

如果 \xe2\x80\x99s 不是一个选项,让我回答你的问题,因为由于 git 中的分支是如此轻量级,所以有更简单的方法来实现你想要的。这些都不是完全自动化的,但非常简单,您绝对可以为此编写一些小脚本。

\n

每个新提交都会自动应用 \xe2\x80\x9elow\xe2\x80\x9c 顶部提交

\n

不太确定情况,但假设您进行了更改并想要提交它们:

\n
    \n
  1. 记住您当前的分支头\xe2\x80\x99s SHA
  2. \n
  3. 隐藏您的更改
  4. \n
  5. git reset --hard HEAD^
  6. \n
  7. stash pop
  8. \n
  9. 犯罪
  10. \n
  11. 挑选你的旧分行负责人
  12. \n
\n

每个合并或樱桃选择也会自动应用 \xe2\x80\x9ebelow\xe2\x80\x9c 顶部提交

\n

同上:reset --hard,做好你的工作,挑选老分支头

\n

来自这样一个分支的合并会从状态 \xe2\x80\x9ebelow\xe2\x80\x9c 顶部提交中提取?

\n

这个很简单:git merge mybranch^

\n
\n

如果您不想更改工作目录,并且您的 \xe2\x80\x9cconfig commit\xe2\x80\x9d 修改的文件没有被您的其他操作触及,您可以这样做:

\n
    \n
  1. 记住您当前的分支头\xe2\x80\x99s SHA
  2. \n
  3. 进行软重置:git reset HEAD^
  4. \n
  5. 让 git 忽略你的配置文件git update-index --assume-unchanged
  6. \n
  7. 创建你的提交
  8. \n
  9. 运行git update-index --no-assume-unchanged你的配置文件
  10. \n
  11. 再次提交 \xe2\x80\x93 这将重新创建您的配置文件。
  12. \n
\n

--assume-unchanged如果您通过脚本自动执行此操作,则可以使用 git通过查看配置提交来获取配置文件列表。如果您不想自动执行此操作,则可以跳过步骤 3 和 5,并确保您在步骤 4 中不提交\xe2\x80\x99t 配置文件。

\n