我的github现在有100个提交。我需要回滚存储库以提交80,并删除所有后续存储库。
为什么?该回购应该用于其他用户的合并。由于过度的编辑,大量合并作为我提交的内容。那是由于我的远程分支贴错了标签,在那里3个开发人员被标记为彼此。我需要重置到该点,然后向前拉。
我想重新设置基准,如本例所示:如何在GitHub上删除提交?
但是,git希望我做很多冲突管理。有没有更简单的方法?
我的github现在有100个提交。我需要回滚存储库以提交80,并删除所有后续存储库。
为什么?该回购应该用于其他用户的合并。由于过度的编辑,大量合并作为我提交的内容。那是由于我的远程分支贴错了标签,在那里3个开发人员被标记为彼此。我需要重置到该点,然后向前拉。
我想重新设置基准,如本例所示:如何在GitHub上删除提交?
但是,git希望我做很多冲突管理。有没有更简单的方法?
Answers:
git reset --hard <old-commit-id>
git push -f <remote-name> <branch-name>
注意:如下面的评论中所述,在协作环境中使用它很危险:您正在重写历史记录
git push origin HEAD --force
而不是git push -f origin branch
那样做,这给我一个error: src refspec branch does not match any.
错误
要撤消最近的提交,我可以这样做:
第一:
git log
获取最新的SHA ID来撤消。
git revert SHA
这将创建一个与提交完全相反的新提交。然后,您可以推送此新提交以将您的应用恢复到之前的状态,并且git历史记录将相应地显示这些更改。
这对于立即重做刚刚执行的操作非常有帮助,我发现这种情况在我看来更常见。
正如Mike提到的,您还可以执行以下操作:
git revert HEAD
git revert HEAD
将还原上一次提交而不必查找哈希。
另一种方式:
签出要还原的分支,然后将本地工作副本重置回您要成为远程服务器上最新提交的提交(此操作之后的所有操作都会再见)。为此,我在SourceTree中,右键单击,然后选择“将BRANCHNAME重置为此提交”。
然后导航到存储库的本地目录并运行以下命令:
git -c diff.mnemonicprefix=false -c core.quotepath=false push -v -f -- tags REPOSITORY_NAME BRANCHNAME:BRANCHNAME
这将删除本地存储库中当前提交之后的所有提交,但仅针对该分支。
git push -f origin branch
。我只是度过了一段糟糕的时光,因为我错过了。