【发布时间】:2021-05-05 07:27:28
【问题描述】:
我想知道远程git repo 是否(或应该)在从本地接收到push 后自动删除未引用的文件对象(以及树),在重新定位本地并跳过一些引入的提交之后这些文件以及这些提交也删除了这些文件。由于这些跳过的提交不再在提交的历史链中,因此远程删除这些对象是合乎逻辑的,因为它们现在不属于历史中的任何提交。这张图可以解释它:
这是rebase --onto之前的历史
在我后悔之前被推到了遥控器。但是这里来尝试修复它......
rebase --onto 933729b1 db759b06
有效地重构提交b5b7c142 after-deleting offending-file
拥有不同的父级:933729b1 before-adding-offending-file 并忽略中间的两个提交。
这是在上面的 rebase 之后的样子:(请注意,第一次提交 SHA1 更改了,因为我们更改了父级)
* 17c95f49 删除违规文件后 | * db759b06 删除了违规文件 | * 59a9440a 添加了违规文件 | / * 933729b1 在添加违规文件之前并且它在本地的历史记录看起来没问题,并且该文件对象仍然存在于 .git/objects 中,它是仍然存在的一些提交的一部分。现在如果我现在推到遥控器会发生什么?它会在 github 上的 .git/objects 中删除该文件对象,因为它现在不是任何提交/树的一部分吗?如果没有,我该怎么做?
【问题讨论】:
标签: git github git-rebase git-push