Git 删除错误重基后引入的重复提交
我有两个分支,Git 删除错误重基后引入的重复提交,git,version-control,rebase,Git,Version Control,Rebase,我有两个分支,master和feature。Master偶尔会收到一些小的调整,这些调整是快速上线所必需的。完成这些调整后,master将重新设置为feature,以便该功能保持最新 在master上更改的文件通常与功能上的大部分开发无关,但我遇到了大量复杂的3路合并冲突 在查看了功能的提交日志之后,我发现问题重复了好几次,我正试图通过交互式重新基址来解决它 我的问题是: 这是解决这个问题的最佳方案吗?如果是的话,我可以放弃重复的内容,从本质上构建我期望的历史吗?另外,我会删除哪些副本,更高(旧
master
和feature
。Master偶尔会收到一些小的调整,这些调整是快速上线所必需的。完成这些调整后,master
将重新设置为feature
,以便该功能保持最新
在master上更改的文件通常与功能
上的大部分开发无关,但我遇到了大量复杂的3路合并冲突
在查看了功能的提交日志之后,我发现问题重复了好几次,我正试图通过交互式重新基址来解决它
我的问题是:
这是解决这个问题的最佳方案吗?如果是的话,我可以放弃重复的内容,从本质上构建我期望的历史吗?另外,我会删除哪些副本,更高(旧的原件)或更低(新的副本)
摘要列表摘自git-rebase-master-i
:
pick 0eb277c Commit A
pick ced2556 Commit B
pick 640e049 Commit C
pick b248ff7 Commit D
pick 9903094 Commit E
pick ebc279d Commit A
pick 313385b Commit F
pick 0d55178 Commit G
pick c8f09f9 Commit H
pick e877be3 Commit I
pick 9859aa0 Commit J
pick c3c8e0f Commit K
pick 8abc68c Commit L
pick 84a5c89 Commit A
pick 30570e4 Commit B
pick 937ff2f Commit C
pick 8e6d911 Commit D
pick 1dd3a09 Commit E
pick fe79288 Commit F
pick 9e790bb Commit G
pick 0924916 Commit H
pick 90d59d7 Commit I
pick ba06c55 Commit J
pick 7452fad Commit K ** Dupes end here** and features then has 30+ more commits.
pick d1dca3d Commit M
pick 6c85f76 Commit N
pick ad53b78 Commit O
pick f166471 Commit P
要删除重复的提交,您必须浏览由git rebase master-i生成的列表,并通过使用箭头键在列表中上下导航来删除重复的提交,按d键可以删除要删除的提交
(master
可替换为commmit哈希或任何有效的re基点)
一旦您删除了所有重复项,并且有了一个提交列表,该列表显示了您期望的历史记录的外观,请按esc键并键入,退出重新基准屏幕!wq
并按enter键
然后,re base将继续并将您选择的提交列表应用到您的re基点上。您可以使用git rebase-i HEAD~x
替换x
,使用您希望从上到下查看的任何提交数量,例如git rebase-i HEAD~3
这将为您提供最后三次提交。然后,您可以选择要保留的提交和要删除的提交。提交0eb277c和ebc279d都标记为提交A,但显然它们的sha1不同,因此它们是不同的提交。事实上,我在sha1列表中没有看到任何重复的提交。我的意思是重复的,提交消息是相同的,应用的代码是相同的。但它被复制并保存为新的提交。