在我们的项目中,我们像往常一样有一个 master 分支。基于那是部署分支,其中设置被修改。同样基于此的是运行部署镜像的镜像分支。 master 分支不应包含任何配置更改补丁。
小功能和修复在镜像分支中开发。所以添加一个特征后,它看起来像这样:
master: history ┐
deployment: ├─ deployment-config
mirror: └─ mirror-config ── feature
现在要将该功能移回 master,我首先必须重新排序镜像分支中的补丁:
master: history ┐
deployment: ├─ deployment-config
mirror: └─ feature ── mirror-config
现在我可以快进 merge 到 master
master: history ┬─ feature ┐
mirror: │ └─ mirror-config
deployment: └─ deployment-config
然后将master merge 到mirror中,并rebase到master上
master: history ── feature ┐
mirror: ├─ mirror-config
deployment: └─ deployment-config
是否有插件或工具可以自动执行此操作,以便
- 每个新提交都会自动应用到顶级提交的“下方”,
- 每个 merge 或 cherry-pick 也会自动应用到顶级提交的“下方”,
- 来自这样一个分支的 merge 从顶部提交的“下方”状态 pull 出?
最佳答案
一般来说,我会建议尝试摆脱这种配置提交情况。您不能只将配置存储在您的部署中吗?或者使用污迹滤镜,正如我在此处解释的:https://stackoverflow.com/a/13616911/758345
如果那不是一个选项,让我来回答你的问题,因为 git 中的分支非常轻量,所以有更简单的方法来实现你想要的。这些都不是完全自动化的,但非常简单,您绝对可以为此编写一些小脚本。
每个新提交都会自动应用到最上面的提交“下方”
不太确定情况,但假设您进行了更改并想要提交它们:
- 记住您当前的分会负责人的 SHA
- 存储您的更改
git reset --hard HEAD^
stash 流行音乐
- promise
- 挑选你的老分行负责人
每个 merge 或 cherry-pick 也会自动应用到顶层提交的“下方”
同上:reset --hard
,做你的工作,cherry-pick old branch head
来自这样一个分支的 merge 从顶部提交的“下方”状态 pull ?
这个很简单:git merge mybranch^
如果你不想改变你的工作目录,并且你的“config commit”修改的文件没有被你的其他操作触及,你可以这样做:
- 记住您当前的分行负责人的 SHA
- 进行软重置:
git reset HEAD^
- 通过
git update-index --assume-unchanged
让 git 忽略你的配置文件 - 创建你的提交
- 为你的配置文件运行
git update-index --no-assume-unchanged
- 再次提交——这将重新创建您的配置文件。
如果您通过脚本自动执行此操作,则可以使用 git 通过查看配置提交来获取 --assume-unchanged
的配置文件列表。如果您不想自动执行此操作,则可以跳过第 3 步和第 5 步,只需确保不在第 4 步中提交配置文件即可。
关于git - 在 git 中“ float ”提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14010807/