#独家
有什么方法删除掉gitignore的这次提交,并保留同事们后续的提交

2025-04-27 0 1,050

起因是提交代码时不希望一些文件被提交,但已经被追踪了。想按照下图方式重新配置了gitignore,
但提交时命令写的

git add .
git commit -m "update gitignore"

“git add .“添加了所有文件.这样导致了项目里每一行代码的修改记录都变成了这次的提交备注”update gitignore”。后续其他同事也提交了几次记录。
想着回滚回这次修改以前的,再让同事们重新提交自己的修改。但同事们已经pull过代码,可能也区分不出来了。 有什么方法删除掉gitignore的这次提交,并保留同事们后续的提交?

————————————————————————————————————————————————————
执行git log –oneline 找到要bad commit e01eb19,再执行git revert e01eb19 文件都被删除且提示无法还原e01eb19….gitignore

不知道原文是哪个天才(或许是 ChatGPT?)写的:git rm -r --cached .,没成想你还真执行了,对于不认识的命令,下次执行前还是先问问 ChatGPT 吧,好在这是 Git,还有回旋的余地。


git rm --cached <file>

这个命令的作用是将指定文件从 Git 中移除,最后一个参数接收的是文件的路径,一般情况下,输入你要忽略的文件路径就好了,而原帖上的 . 就表示当前位置,-r 选项表示递归,换句话说,原帖的操作就是所有的文件从 git 中移除了,然后又从新 add/commit,颇有一种大炮打蚊子的美感。

如果你现在后面没有新的提交,那么直接 git reset --hard 3e3fed4 到这个位置,然后从新使用 git rm --cached <file> 命令把你要删除的文件删除,然后提交即可,如果是目录,则需要 -r 选项。

如果你现在后面有新的提交了,那么就可以考虑使用 git rebase -i HEAD...3e3fed4drop 掉 e01eb19 这一条 commit。

这其中可能会有冲突需要解决,待全部完成后,从新使用 git rm --cached <file> 删除你要排除的文件(你现在应该已经在 .gitignore 中忽略了这个文件),再次提交,即可。

Jetbrains 系列 IDE 的 Git 面板上可以直接右键 Drop Commit

现在,因为你篡改了 git 的提交历史,如果代码已经推送到了远端,你必须要使用强制推送,才能推送,建议使用 git push --force-with-lease ,如果此时推送失败了,则说明已经有其他人往这个分支推送了更新的代码,你现在需要拉一下最新的代码,后才能推送,避免使用 --force 选项,这可能会破坏其他人新的提交。

误操作不要怕
git reflog 可以拯救你

git reflog 的回退和git log的回退操作一模一样

reflog记录的是你的本地操作历史,所以如果有误操作 你可以直接reset回操作之前的记录

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

1. JK下载官网所有资源来源于开发团队,加入会员即可下载使用!如有问题请联系右下角在线客服!
2. JK下载官方保障所有软件都通过人工亲测,为每位会员用户提供安全可靠的应用软件、游戏资源下载及程序开发服务。
3. JK开发团队针对会员诉求,历经多年拥有现今开发成果, 每款应用程序上线前都经过人工测试无误后提供安装使用,只为会员提供安全原创的应用。
4. PC/移动端应用下载后如遇安装使用问题请联系右下角在线客服或提交工单,一对一指导解决疑难。

JK软件下载官网 技术分享 有什么方法删除掉gitignore的这次提交,并保留同事们后续的提交 https://www.jkxiazai.com/4295.html

JK软件应用商店是经过官方安全认证,保障正版软件平台

相关资源

官方客服团队

为您解决烦忧 - 24小时在线 专业服务