在有后续提交的分支上Revert指定Commit,是否保留后续修改?
Git Revert 后后续提交的变更会保留吗?
嘿,这个问题问得特别实用,我来给你讲明白~
首先得搞懂 git revert 到底是干啥的:它不会删除任何已有的提交历史,而是生成一个全新的提交,这个新提交的作用就是把你指定要撤销的那个commit里的所有变更给反向抵消掉。
回到你的核心问题:后续提交的变更会完完整整保留下来!因为 git revert 只针对你指定的那个特定commit动手,和它之后的所有提交都没有关系。
举个直观的例子:
假设你的提交历史是这样的:Commit A -> Commit B(你要撤销的)-> Commit C -> Commit D
当你执行命令 git revert <Commit B的哈希值> 之后,Git会自动创建一个新的Commit E,这个E的内容就是把Commit B做的所有修改给“还原”回去。这时候你的提交历史会变成:Commit A -> Commit B -> Commit C -> Commit D -> Commit E
你看,Commit C和D里的所有变更都原封不动地保留着,只是Commit B的效果被Commit E给中和了而已。
当然有个小细节要注意:如果后续的提交(比如C或D)和你要撤销的Commit B有代码冲突的话,执行revert的时候Git会提示你解决冲突,但这只是常规的合并冲突问题,解决完之后C和D的内容依然会完整保留,只是需要你手动调整冲突的部分罢了。
内容的提问来源于stack exchange,提问作者Harry Blue
相关产品推荐
相关产品推荐

