将本地代码库还原为特定的Heroku版本

时间:2019-04-02 11:14:45

标签: git heroku bitbucket

我继承了一个代码库,并且在完成项目后,我意识到以前的开发人员没有将代码推送到Bitbucket,因此我的本地版本是错误的。 因此,我想从Heroku中克隆特定版本。

我该怎么做

2 个答案:

答案 0 :(得分:0)

首先,请仔细查看您现有的存储库,以查看代码是否确实存在。例如,它可能在不同的分支中。您应该能够通过heroku releases来查看最近一次提交使用了哪个提交哈希,或者可以在网络面板中查看其“活动”标签。

假设实际上没有提交,并且由于您的应用是通过git push¹部署的,那么您应该能够从Heroku中获取信息(假设您的遥控器名为heroku):

git fetch heroku

此后,您应该能够根据该提交创建一个新的本地分支,例如通过

git branch new-branch heroku/master

don't make a habit of this

  

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)。

现在,您的本地存储库将回滚到您要查找的特定提交。