我们的一位开发人员不小心将他的本地仓库推送到了错误的共享仓库。
我已经设法使用 git push 和 force 将标题重置到正确的位置,所以现在这部分没问题。
但是,我无法摆脱错误的提交,它在 gitk --all 中显示为没有父级和子级的提交(即它没有连接到任何分支)。
有没有办法完全摆脱这个(我们冻结了共享仓库,所以自上次推送以来没有人拉过)??
如果我理解正确,错误的提交仍在 git 存储库中,但不会被任何其他提交(或分支)引用。
git gc
将删除此提交,正如您之前的答案已经知道的那样,但它不会删除超过 2 周的对象。(以防止您丢失数据)。
如果你真的确定你在做什么(有备份等),你可以做git gc --prune=<date>
. 对git gc
各州的帮助:
“修剪早于日期的松散对象(默认为 2 周前,可由配置变量 gc.pruneExpire 覆盖)。此选项默认启用。”
这是一种奇怪的状态,我做了很多次这样的更正,但从未见过那些单独的提交。你是在本地的 repo 上运行 gitk,还是克隆一些?
我会推一些空的/不相关的提交,然后再看一遍——可能小故障就消失了。如果不是我会跑git fsck
。
此外,如果您克隆中央存储库,您是否在克隆中看到了多余的提交?
您可以git gc
在远程存储库中运行。如果无法从任何引用中访问提交,则应从存储库中删除它。之前一定要做好备份。