我继承了一个代码库,并且在完成项目后,我意识到以前的开发人员没有将代码推送到Bitbucket,因此我的本地版本是错误的。 因此,我想从Heroku中克隆特定版本。
我该怎么做
答案 0 :(得分:0)
首先,请仔细查看您现有的存储库,以查看代码是否确实存在。例如,它可能在不同的分支中。您应该能够通过heroku releases
来查看最近一次提交使用了哪个提交哈希,或者可以在网络面板中查看其“活动”标签。
假设实际上没有提交,并且由于您的应用是通过git push
¹部署的,那么您应该能够从Heroku中获取信息(假设您的遥控器名为heroku
):
git fetch heroku
此后,您应该能够根据该提交创建一个新的本地分支,例如通过
git branch new-branch heroku/master
Heroku应用程序的Git存储库仅用于部署目的。正式不支持从此存储库进行克隆作为功能,仅应作为最后的尝试。 请勿使用此存储库作为您应用的规范“原始”存储库。而是使用您自己的Git服务器或版本控制服务(例如GitHub)。
¹GitHub部署不会更新Heroku的Git存储库。如果您是通过GitHub或Docker进行部署,则无法使用git fetch
获取最新代码。
答案 1 :(得分:0)
实际上,有一种方法可以在不对您的应用程序执行任何破坏性操作的情况下。
首先,请确保已在本地安装了适用于Heroku应用程序的git遥控器。您可以通过从本地应用程序的根目录运行heroku git:remote -a your-app-name
来实现。 (确认正在运行cat .gitconfig
。)
注意:切记,Heroku强烈劝阻其用户不要依赖Heroku本身为您的应用程序托管的git存储库。它仅用于代码部署。
也就是说,可以从您在Heroku上的应用中git pull
开始。由于无法完全了解您的情况,因此很难确切地知道向您提供哪些命令。就是说,如果git pull heroku master
导致冲突,则可以考虑将git pull
强制到本地分支。这样,当您仍然能够获得在Heroku上运行的代码的副本时,master分支保持原样。
一旦您拥有Heroku当前正在运行的代码,请运行heroku releases -a your-app-name
来获取应用程序最新发行版的列表。找到您感兴趣的对象,并记下SHA哈希。这是您要查找的git commit。
有了这个,您可以简单地使用git reset --hard abcdef
(其中abcdef
是您从感兴趣的发行版中检索到的SHA)。
现在,您的本地存储库将回滚到您要查找的特定提交。