如何从分支历史记录中删除提交?我应该使用git reset-hard HEAD吗?
当前回答
git重置--硬HEAD~1你现在将处于前一个位置。拉动树枝。推送新代码。提交将从git中删除
其他回答
小心:git reset-hard将删除您的工作目录更改。在运行此命令之前,请确保隐藏所有要保留的本地更改。
假设您正在执行该提交,则此命令将使其变得古怪。。。
git reset --hard HEAD~1
HEAD~1表示在HEAD之前提交。
或者,您可以查看gitlog的输出,找到要备份的提交的提交id,然后执行以下操作:
git reset --hard <sha1-commit-id>
如果你已经推了它,你需要用力推才能摆脱它。。。
git push origin HEAD --force
然而,如果其他人已经成功了,那么你最好开始一个新的分支。因为当他们拉动时,它会将其合并到他们的工作中,你会再次将其推高。
如果您已经推送了,那么最好使用git-restore创建一个“镜像”提交,以撤消更改。但是,这两个提交都将在日志中。
仅供参考——git reset——如果你想摆脱“正在进行的工作”,那么硬头非常好。它会将您重置为最近的提交,并清除工作树和索引中的所有更改。
最后,如果您需要找到您“删除”的提交,除非您已经垃圾收集了存储库,否则它通常会出现在gitreflog中。
#[快速回答]
您有许多选择,例如:
备选方案1:git rebase-i<YourCommitId>~1将YourCommitId更改为要还原回的提交次数。备选方案2:git reset--硬YourCommitIdgit push<origin><branch>--force将YourCommitId更改为要还原回的提交次数。我不建议使用此选项,因为您可能会丢失正在进行的工作。备选方案3:git reset—软HEAD~1你可以保留你的工作,只撤销承诺。
这里有30多个回答者,我将简单介绍适合我的答案
删除.git文件夹可能会导致git存储库出现问题。如果您希望删除所有提交历史记录,但将代码保持在当前状态,则可以按照以下方式进行操作:
结账
git checkout --orphan latest_branch
添加所有文件
git add -A
提交更改
git commit -m "commit message"
删除分支
git branch -D master
将当前分支重命名为主分支
git branch -m master
最后,强制更新存储库
git push -f origin master
PS:这不会保留您以前的提交历史。
将代码备份到临时文件夹。以下命令将重置服务器。
git reset --hard HEAD
git clean -f
git pull
如果要保留更改并删除最近的提交
git reset --soft HEAD^
git pull
如果您没有发布更改,为了删除最新提交,您可以
$ git reset --hard HEAD^
(注意,这也会删除所有未提交的更改;请小心使用)。
如果您已经发布要删除的提交,请使用git-restore
$ git revert HEAD
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式
- git pull -rebase和git pull -ff-only之间的区别