背景:我们正在企业工作区中切换到GIT,并且渴望拥有最好的习惯。我们决定采用 GitFlow 作为我们的工作流程,但它并没有解释在最后一刻需要撤消的还原变更。
我们创建了发布分支release/1.1.0
。但是这包含了几个我们不希望发布到生产中的提交。
我怀疑如果我使用git revert
来取出这些提交,当我将发布分支重新集成回master
时,那些提交就会被删除。
在GIT和/或GitFlow中,从提交中提取提交的正确的做法是什么,以便以后不会被还原?
答案 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
来保持历史清洁。