Git 用法:在 HEAD 之前“插入”提交

Ben*_*tto 3 git

问题标题可能毫无意义,但我尝试过。:)

这是我的情况:

我有一个只有一个分支(主)的存储库。(从该存储库中,当我“发布”构建时,我在提交处添加一个代表已发布构建的标签,以便我可以返回它。)

如果我查看提交的时间表,可以说它看起来像这样:

Start ----------> A --> HEAD
Run Code Online (Sandbox Code Playgroud)

其中“A”是最近的一些提交,但在 HEAD 之前。我想“发布”一个省略自 A 以来所有更改的构建。但我也想在发布之前对该版本的树进行一两次调整。从概念上讲,我想做的是回滚到 A 点,提交一些更改,然后在发布后,重新应用从 A --> HEAD 开始的所有差异,这将使我恢复到最新状态并包括我也对 A 做了一些调整。

这就是我想做的概念性的事情。我不知道如何思考使用 git 实现这一目标的最佳方法。有人可以在这里提供一些周到的指导吗?

谢谢!

wno*_*ise 6

git checkout -b release_A A;将为您提供一个基于该版本的分支供您使用。(假设它被标记为release_A——您还可以使用sha1sums来引用特定的提交)。

破解并git commit创建新的提交。

git tag release_A_2这样你就有了这个版本的标签。

然后准确选择以下选项之一:

  1. git rebase A master或者git checkout master; git rebase A
  2. git checkout master; git merge A

在任何一种情况下,您都可以选择git branch -d A删除不再使用的分支。

选择 1 将完全按照您的要求进行。然而,如果其他人已经使用这个分支来做任何事情,这通常是一个坏主意。根据您的设置,这可能是您想要的。

选择 2 实际上不会改变历史记录——所有提交都代表实际历史记录。相反,它将将该分支中的更改合并到master. 合并通常以痛苦着称,但这个 git 应该和情况 1 一样聪明。如果您自 release_A 以来标记或发布了任何内容,我强烈建议使用此方法,因为这意味着这些方法仍然是可重现的。