如何将提交移动到以后的分支并避免在合并时将其还原?

时间:2015-04-16 02:05:04

标签: git git-branch git-flow

背景:我们正在企业工作区中切换到GIT,并且渴望拥有最好的习惯。我们决定采用 GitFlow 作为我们的工作流程,但它并没有解释在最后一刻需要撤消的还原变更。

我们创建了发布分支release/1.1.0。但是这包含了几个我们不希望发布到生产中的提交。

我怀疑如果我使用git revert来取出这些提交,当我将发布分支重新集成回master时,那些提交就会被删除。

在GIT和/或GitFlow中,从提交中提取提交的正确的做法是什么,以便以后不会被还原?

1 个答案:

答案 0 :(得分:1)

如果要永久删除release/1.1.0分支中的所有提交,请使用正确的工具:

git rebase -i

git checkout release/1.1.0
git rebase -i

系统会提示您显示如下内容:

pick a8xl3do Comment for commit c1
pick 49Un2Sa Comment for commit c2
pick d0a9iUl Comment for commit c3
pick G38c8oA Comment for commit c4

Git会给你一个选项列表,包括以下评论:

# If you remove a line here THAT COMMIT WILL BE LOST.

您可以删除与您不想要的提交相对应的行(例如c1和c3),然后完成rebase。

如果您真的想要从release/1.1.0分支进行一些提交,这将正常工作。但是,如果您想暂时删除这些提交,那么您应该从release/1.1.0创建一个新分支,然后使用它。

请注意,您还可以使用git revert来“撤消”提交,但此命令实际上会在您的分支中创建 new 提交以撤消先前提交的操作。我总是喜欢使用rebase来保持历史清洁。