问题标题可能毫无意义,但我尝试过。:)
这是我的情况:
我有一个只有一个分支(主)的存储库。(从该存储库中,当我“发布”构建时,我在提交处添加一个代表已发布构建的标签,以便我可以返回它。)
如果我查看提交的时间表,可以说它看起来像这样:
Start ----------> A --> HEAD
Run Code Online (Sandbox Code Playgroud)
其中“A”是最近的一些提交,但在 HEAD 之前。我想“发布”一个省略自 A 以来所有更改的构建。但我也想在发布之前对该版本的树进行一两次调整。从概念上讲,我想做的是回滚到 A 点,提交一些更改,然后在发布后,重新应用从 A --> HEAD 开始的所有差异,这将使我恢复到最新状态并包括我也对 A 做了一些调整。
这就是我想做的概念性的事情。我不知道如何思考使用 git 实现这一目标的最佳方法。有人可以在这里提供一些周到的指导吗?
谢谢!
git checkout -b release_A A;将为您提供一个基于该版本的分支供您使用。(假设它被标记为release_A——您还可以使用sha1sums来引用特定的提交)。
破解并git commit创建新的提交。
git tag release_A_2这样你就有了这个版本的标签。
然后准确选择以下选项之一:
git rebase A master或者git checkout master; git rebase Agit checkout master; git merge A在任何一种情况下,您都可以选择git branch -d A删除不再使用的分支。
选择 1 将完全按照您的要求进行。然而,如果其他人已经使用这个分支来做任何事情,这通常是一个坏主意。根据您的设置,这可能是您想要的。
选择 2 实际上不会改变历史记录——所有提交都代表实际历史记录。相反,它将将该分支中的更改合并到master. 合并通常以痛苦着称,但这个 git 应该和情况 1 一样聪明。如果您自 release_A 以来标记或发布了任何内容,我强烈建议使用此方法,因为这意味着这些方法仍然是可重现的。
| 归档时间: |
|
| 查看次数: |
3467 次 |
| 最近记录: |