Git 为什么heroku认为我的回购协议是最新的,即使在我强制推行旧的承诺之后?

Git 为什么heroku认为我的回购协议是最新的,即使在我强制推行旧的承诺之后?,git,heroku,Git,Heroku,如果我强制推送一个比head更老的提交,它就会工作。如果我试着推头,我会被告知一切都是最新的。为什么?这是一般的git问题,还是heroku独有的问题?第二个命令实际执行了吗 # this works, as expected git push heroku develop:master ... # then, this doesn't work, as expected git push heroku develop:master Everything up-to-date # then,

如果我强制推送一个比head更老的提交,它就会工作。如果我试着推头,我会被告知一切都是最新的。为什么?这是一般的git问题,还是heroku独有的问题?第二个命令实际执行了吗

# this works, as expected git push heroku develop:master ... # then, this doesn't work, as expected git push heroku develop:master Everything up-to-date # then, pushing an older commit works, as expected git push heroku a1b2c3d4:master ... # then, this fails. why?! :-( git push heroku develop:master Everything up-to-date #正如预期的那样,这是可行的 git push heroku开发:master ... #那么,这就不起作用了,正如预期的那样 git push heroku开发:master 一切都是最新的 #然后,按预期推送较旧的提交工作 git push heroku a1b2c3d4:主 ... #然后,这就失败了。为什么-( git push heroku开发:master 一切都是最新的
你有没有把旧的提交推给Heroku?我想你没有,因为Heroku可能会在提交id上确定它是否收到了版本。 可通过以下步骤验证该假设:

1. git push heroku develop:master => our starting point
2. Change and commit => Rev A
3. Change and commit => Rev B
4. git push heroku develop:master => Rev B known to Heroku
5. Change and commit => Rev C
6. git push heroku develop:master => Rev C known to Heroku
7. git push heroku Rev A:master => this should work as unknown to Heroku
8. git push heroku Rev B:master => this should not work as known to Heroku
9. git push heroku develop:master => we know this doesn't work
不管怎么说,你可以用它来回翻滚 和

您能否详细说明第一段中的想法,或者给我一个我能读到的东西的链接?谢谢!我添加了一个提案,概述了我的想法以及验证它的可能方法。如果您运行它,如果您可以添加它作为附加答案,那将非常好。