Git Push取代历史

费利克斯

我已用另一个存储库的最后一次提交替换了最初提交的父项。我想推动这些变化。

我做了什么,从12收集

git clone B
cd B
git remote add A URL
git fetch A
git replace --graft b_root_sha a_head_sha
git push origin 'refs/replace/*:refs/replace/*'

这工作正常,裁判被推。但是我一定理解错了。我在远程仓库中看不到替换的证据。我的第一个承诺仍然b_root没有父母。如果有任何区别,我正在GitHub上查看。

理想情况下,我希望:

  • 将提交A真正Bmaster
  • 由于已解决的问题和请求请求中的引用而保留了提交哈希

因为那样,整个历史记录将位于同一存储库中。这种组合可能吗?如果不是,是否可以以销毁参考为代价推销整个历史记录,还是至少在存储库中显示父目录?或在非常至少在仓库某处代码只是在商店为人们获取引用,看看自己正确的父母应该是什么。

费利克斯

如以上评论所述,在torek的大力帮助下:

GitHub不显示替换

在其UI中,替换的根提交没有父级,并且提交计数是存储库中原始提交的数量。因此,无法通过GitHub查看替换的较旧的提交。但是,执行完我在问题中列出的步骤后,它们将保存在存储库中,而不依赖于任何其他远程服务器。

如何查看替代品

需要从存储库中获取替换内容以进行查看。作为标签等,克隆时默认情况下不下载它们。

git fetch origin '+refs/replace/*:refs/replace/*'

然后,例如git log --oneline显示完整的历史记录。父关系是伪造的,因此保留了最近提交的哈希值。如果希望真正应用替换,git filter-branch则不能使用任何参数。但是,至少在graft将更改推回时存在一些问题(找不到索引包,找不到预期的对象)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章