代码之家  ›  专栏  ›  技术社区  ›  Ben Zotto sberry

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

git
  •  0
  • Ben Zotto sberry  · 技术社区  · 14 年前

    我的情况是:

    我有一个只有一个分支(master)的存储库。(在那个存储库中,当我“发布”构建时,我会在提交时添加一个表示发布的构建的标记,这样我就可以返回到它了。)

    如果我看一下提交的时间线,我们可以这样说:

    Start ----------> A --> HEAD
    

    这就是我想在概念上做的。我不知道如何考虑用git实现这一点的最佳方法。有人能在这里提供一些周到的指导吗?

    2 回复  |  直到 14 年前
        1
  •  2
  •   wnoise    14 年前

    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一样聪明。如果您在发布后标记或发布了任何内容,我强烈建议您使用此方法,因为这意味着这些内容仍然是可复制的。

        2
  •  2
  •   Ben Jackson    14 年前

    你可以按你的要求做 git rebase -i . 提交新更改,然后使用 rebase -i

    但是,如果您曾经与任何人共享过该树,那么最好不要替换那些中间版本,而是执行如下操作 git checkout -b release_A A git merge git cherry-pick 回到你的主人身上。