我已用另一个存储库的最后一次提交替换了最初提交的父项。我想推动这些变化。
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
真正推B
入master
因为那样,整个历史记录将位于同一存储库中。这种组合可能吗?如果不是,是否可以以销毁参考为代价推销整个历史记录,还是至少在存储库中显示父目录?或在非常至少在仓库某处代码只是在商店为人们获取引用,看看自己正确的父母应该是什么。
如以上评论所述,在torek的大力帮助下:
在其UI中,替换的根提交没有父级,并且提交计数是存储库中原始提交的数量。因此,无法通过GitHub查看替换的较旧的提交。但是,执行完我在问题中列出的步骤后,它们将保存在存储库中,而不依赖于任何其他远程服务器。
需要从存储库中获取替换内容以进行查看。作为标签等,克隆时默认情况下不下载它们。
git fetch origin '+refs/replace/*:refs/replace/*'
然后,例如git log --oneline
显示完整的历史记录。父关系是伪造的,因此保留了最近提交的哈希值。如果希望真正应用替换,git filter-branch
则不能使用任何参数。但是,至少在graft
将更改推回时存在一些问题(找不到索引包,找不到预期的对象)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句