我在做一些代码更新之前忘了创建一个分支,现在我必须恢复到初始提交并删除初始提交之后的所有提交。这项工作已被保存在某个地方,所以我没有失去它的风险。
我已经使用了" git reset --hard {SHA}"重置回到我需要的位置,但是现在我已经完成了在初始提交之后执行的所有提交,等待返回并与主副本同步。
我想从2015年6月10日到2015年7月2日删除所有提交,因为不再需要它们。有谁知道怎么做?
答案 0 :(得分:15)
从任何分支中移除远程提交[主分支]
如果您向远程服务器提交某些内容,无论出于何种原因,该内容都不应该在特定分支上提交,您可以使用以下步骤将其删除
如果分支有您要保留的更改 - 从步骤1开始
如果您不关心这些更改,只想恢复到特定提交 - 从第3步开始
执行硬重置并将HEAD重置为您想要的提交 使用命令创建分支: git reset --hard {SHA}
创建分支并将其发布到服务器(您可能会丢失您的分支 如果你跳过这一步,你可以工作吗)
对要保留的提交执行硬重置为HEAD - git reset --hard {SHA}
要使用该命令执行强制推送,请对传入的提交进行核心操作 : git push -f
答案 1 :(得分:3)
如果没有其他人使用此回购,请执行git push -f
,服务器的内容将被您的内容覆盖。
如果其他人 使用此存储库(并且自从您提交了要删除的提交后已经撤消),他们将需要在提取之后对其进行硬重置({{ 1}},假设你在分支git reset --hard origin/master
上)。在这种情况下,我建议使用master
来简单地撤消提交的效果,而不是尝试从历史记录中删除它们。