从Git

时间:2015-07-02 19:55:15

标签: git

我在做一些代码更新之前忘了创建一个分支,现在我必须恢复到初始提交并删除初始提交之后的所有提交。这项工作已被保存在某个地方,所以我没有失去它的风险。

我已经使用了" git reset --hard {SHA}"重置回到我需要的位置,但是现在我已经完成了在初始提交之后执行的所有提交,等待返回并与主副本同步。

我想从2015年6月10日到2015年7月2日删除所有提交,因为不再需要它们。有谁知道怎么做?

enter image description here

2 个答案:

答案 0 :(得分:15)

从任何分支中移除远程提交[主分支]

如果您向远程服务器提交某些内容,无论出于何种原因,该内容都不应该在特定分支上提交,您可以使用以下步骤将其删除

如果分支有您要保留的更改 - 从步骤1开始

如果您不关心这些更改,只想恢复到特定提交 - 从第3步开始

  1. 执行硬重置并将HEAD重置为您想要的提交 使用命令创建分支: git reset --hard {SHA}

    • {SHA}是提交ID
  2. 创建分支并将其发布到服务器(您可能会丢失您的分支 如果你跳过这一步,你可以工作吗)

  3. 对要保留的提交执行硬重置为HEAD - git reset --hard {SHA}

    • 这将导致提交后完成的所有提交 您重置为,将作为传入同步待处理 - 不同步
  4. 要使用该命令执行强制推送,请对传入的提交进行核心操作 : git push -f

答案 1 :(得分:3)

如果没有其他人使用此回购,请执行git push -f,服务器的内容将被您的内容覆盖。

如果其他人 使用此存储库(并且自从您提交了要删除的提交后已经撤消),他们将需要在提取之后对其进行硬重置({{ 1}},假设你在分支git reset --hard origin/master上)。在这种情况下,我建议使用master来简单地撤消提交的效果,而不是尝试从历史记录中删除它们。