如何从分支历史记录中删除提交?我应该使用git reset-hard HEAD吗?
当前回答
这里我只发布了一条清晰的管道
步骤1:使用gitlog获取提交ID。
git log
步骤2:使用git reset返回到以前的版本:
git reset --hard <your commit id>
其他回答
如果您刚刚弄糟了上一次提交(错误的消息,忘记添加一些更改),并想在将其推送到公共回购之前修复它,为什么不使用:
git commit --amend -m "New message here"
如果您有新暂存的更改,它们将与上一次提交(您正在尝试删除)合并,并将替换该提交。
当然,如果你在推送之后修改了一个承诺,你就是在改写历史,所以如果你这样做,一定要理解其中的含义。
如果您希望使用上一次提交的消息,也可以传递“--no edit”选项而不是“-m”。
文件:http://git-scm.com/docs/git-commit.html
如果要修复最近的提交,可以通过以下操作撤消提交并取消其中的文件:
git reset HEAD~1
这将使存储库返回到暂存文件的gitadd命令之前的状态。您的更改将在您的工作目录中。HEAD~1指的是分支当前尖端以下的提交。
如果要取消提交N个提交,但将代码更改保留在工作目录中:
git reset HEAD~N
如果您想摆脱最新的提交,并且不想保留代码更改,可以进行“硬”重置。
git reset --hard HEAD~1
同样,如果您想放弃最后N次提交,并且不想保留代码更改:
git reset --hard HEAD~N
这里有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 --soft HEAD~1
如果要删除当前正在进行的提交,并希望删除相关数据-
git reset --hard HEAD~1
PS:这些命令只会删除本地提交。
正如您在上图中看到的,我想删除revert“test change 2”提交(SHA1 ID:015b5220c50e3dfbb1063f23789d92ae1d3481a2(您可以使用gitbash中的gitk命令获取SHA1 ID))。
为此,我可以使用(以下所有命令仅适用于本地。删除后需要推送):
git reset--hard 515b5220c50e3dfbb1063f23789d92ae1d3481a2//将您备份到该提交(测试更改4提交的SHA1 ID为515b5220C50e3dfbb 1063f23799d92ae 1d3481A2)gitreset-hardHEAD~1//它在一次提交之前备份您。git reset--hard HEAD ^//从git中删除最后一次提交
删除后:
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的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之间的区别