在重写历史记录后,Github的问题跟踪器中对旧提交的引用仍然存在

时间:2014-02-24 09:43:59

标签: git github issue-tracking

我们正在使用Github及其相关的问题跟踪系统(ITS)。我们在提交消息中引用ITS中的问题ID,链接ITS和提交。由于我已经在已经推送的提交的提交消息中混淆了许多问题ID,因此我不得不在我的Git存储库中“重写历史记录”。一切顺利,我强行推动我对Github的改变。

我希望更新ITS中的问题到旧提交的链接(不再用git log可见),并更改为引用它们的新提交。不幸的是,他们不是。即使问题的提交在存储库中不再存在,仍然会从Github上的问题网站引用它。但是,引用的提交不会显示在正常git log中。事实上,我有点感到疑惑,事实上git checkout <old_commit>,即使没有证据证明这个提交曾经存在于日志中。

有没有办法在Github上触发一个完整的新存储库读入,或者我可以以某种方式手动编辑链接的提交?此外,该问题没有与新提交的链接。

我从Github找到了一个相关的帮助页面,但这只是向我建议,从git push开始,Github会处理所有事情:https://help.github.com/articles/can-i-delete-a-commit-message

谢谢!

2 个答案:

答案 0 :(得分:0)

即使本地克隆中不存在提交,并且没有引用它的标签或分支,即使Github尚未在其上运行垃圾收集器,该提交仍可能存在于Github的存储库中。据我了解,出于性能原因,它们的执行频率比本地git的执行频率低。如果是这样,它将最终消失。

我不知道“拥有来自问题跟踪程序的指针”是否可以算作无法垃圾回收提交的原因。如果是这样,就不会存在问题。

答案 1 :(得分:0)

GitLab具有备份功能,可导出整个项目和所有相关数据。我发现从项目中完全删除提交的最简单方法是进行备份,对存储库及其中包含的数据进行手动编辑,然后还原-首先通过还原到新的存储库进行测试,然后删除旧的存储库并还原到位。