我的github现在有100个提交。 我需要回滚存储库以提交80,并删除所有后续存储库。
为什么? 该回购应该用于其他用户的合并。 由于过度的编辑,大量合并作为我提交的内容。 那是由于我的远程分支贴错了标签,在那里3个开发人员被标记为彼此。 我需要重置到这一点,然后向前拉。
我想重新设置基准,如本例所示: 如何在GitHub上删除提交?
但是,git希望我做很多冲突管理。 有没有更简单的方法?
#1楼
其他方式:
签出要还原的分支,然后将本地工作副本重置回您要成为远程服务器上最新提交的提交(此操作之后的所有操作都会再见)。 为此,在SourceTree中,右键单击,然后选择“将BRANCHNAME重置为此提交”。
然后导航到存储库的本地目录并运行以下命令:
git -c diff.mnemonicprefix=false -c core.quotepath=false push -v -f -- tags REPOSITORY_NAME BRANCHNAME:BRANCHNAME
这将删除本地存储库中当前提交之后的所有提交,但仅针对该分支。
#2楼
要撤消最近的提交,我可以这样做:
第一:
git log
获取最新的SHA ID来撤消。
git revert SHA
这将创建一个与提交完全相反的新提交。 然后,您可以推送此新提交以将您的应用恢复到之前的状态,并且git历史记录将相应地显示这些更改。
这对于立即重做刚刚执行的操作非常有帮助,我发现这种情况在我来说更常见。
正如Mike提到的,您还可以执行以下操作:
git revert HEAD
#3楼
git reset --hard <old-commit-id>
git push -f <remote-name> <branch-name>
注意:如下面的注释中所述, 在协作环境中使用此方法很危险:您正在重写历史记录
#4楼
从master进行分支更新时,我注意到有时会单击鼠标,并使分支也合并到master中。 找到了一种解决方法。
如果您的最后一次提交是合并,则需要多一点爱:
git revert -m 1头
#5楼
在github中,简单的方法是在github UI中的branchs选项卡下删除远程分支。 您必须确保删除以下设置以使分支可删除:
- 不是默认分支
- 没有公开投票要求。
- 分支不受保护。
现在,在您的本地存储库中重新创建它以指向上一个提交点。 并将其添加回远程仓库。
git checkout -b master 734c2b9b # replace with your commit point
然后将本地分支推送到远程
git push -u origin master
重新添加默认分支和分支保护等。
#6楼
大多数建议都假定您需要以某种方式销毁最后20个提交,这就是为什么它意味着“重写历史记录”的原因,但是您不必这样做。
只需从commit#80创建一个新分支,然后继续进行该分支。 其他20个提交将保留在旧的孤立分支上。
如果您绝对希望新分支具有相同的名称,请记住该分支基本上只是标签。 只需将旧分支重命名为其他名称,然后在提交#80处使用所需名称创建新分支。
#7楼
也可以查看过去的提交,因此,如果您不想使用git,则可以创建一个新的提交,并将想要还原的所有内容复制到新的提交中。 这种方法非常耗时且不精确,但是它应该可行。
来源:CSDN
作者:asdfgh0077
链接:https://blog.csdn.net/asdfgh0077/article/details/104157177