gpt4 book ai didi

git - 如何还原上次提交并将其从历史记录中删除?

转载 作者:IT王子 更新时间:2023-10-29 00:45:09 27 4
gpt4 key购买 nike

我做了一个提交并恢复了

git revert HEAD^

只是 git 日志

➜  git:(master) git log
commit 45a0b1371e4705c4f875141232d7a97351f0ed8b
Author: Daniel Palacio <danpal@gmail.com>
Date: Tue Jan 17 16:32:15 2012 -0800

Production explanation

但是如果我执行 git log --all 它仍然会显示。我需要将其从历史记录中删除,因为它包含敏感信息

git log --all
commit 5d44355080500ee6518f157c084f519da47b9391
Author: Daniel Palacio
Date: Tue Jan 17 16:40:48 2012 -0800

This commit has to be reset

commit 45a0b1371e4705c4f875141232d7a97351f0ed8b
Author: Daniel Palacio
Date: Tue Jan 17 16:32:15 2012 -0800

Production explanation

如何从历史记录中删除提交 5d44355080500ee6518f157c084f519da47b9391?

最佳答案

首先,git revert 是这里的错误命令。这会创建一个新的提交来恢复旧的提交。那不是你要的。其次,您似乎想要还原 HEAD 而不是 HEAD^

如果你还没有把它推到任何地方,你可以使用 git reset --hard HEAD^ 来丢弃最新的提交(这也会丢弃任何未提交的更改,所以一定不要'没有你想保存的)。假设您可以接受敏感信息出现在您的副本 而不是其他人的副本中,那么您就完成了。您可以继续工作,随后的 git push 不会推送您的错误提交。

如果这不是一个安全的假设(如果不是的话我很想听听为什么),那么您需要使您的 reflog 过期并强制执行垃圾回收以立即收集所有未完成的对象。你可以这样做

git reflog expire --expire=now --expire-unreachable=now --all
git gc --prune=now

虽然只有在您确实绝对需要这样做时才应该这样做。


如果您 推送了您的提交,那么您就很不走运了。您可以执行强制推送以远程恢复它(尽管只有在远程端允许的情况下),但是您不能从远程端的数据库中删除提交本身,因此任何有权访问该存储库的人都可以找到它知道要寻找什么。

关于git - 如何还原上次提交并将其从历史记录中删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8903953/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com