Git 卡皮斯特拉诺+;吉特-”他说;找不到“;[行政长官]

Git 卡皮斯特拉诺+;吉特-”他说;找不到“;[行政长官],git,github,ssh,capistrano,Git,Github,Ssh,Capistrano,我在设置工作站以使用Capistrano部署项目时遇到困难。这是我以前为一个客户做的一个项目。我们在这个PHP项目上毫不费力地使用了Capistrano+Git 现在,我试图重新访问该项目,并设置一个工作站,以便能够通过github访问代码,并通过Capistrano将其部署到客户机服务器 我在工作站或客户机服务器上连接github都没有困难。我可以执行SSH-vTgit@github.com在我的工作站上,并获得预期的成功结果 同样,我可以将shell插入服务器并执行命令,以验证服务器是否可以

我在设置工作站以使用Capistrano部署项目时遇到困难。这是我以前为一个客户做的一个项目。我们在这个PHP项目上毫不费力地使用了Capistrano+Git

现在,我试图重新访问该项目,并设置一个工作站,以便能够通过github访问代码,并通过Capistrano将其部署到客户机服务器

我在工作站或客户机服务器上连接github都没有困难。我可以执行SSH-vTgit@github.com在我的工作站上,并获得预期的成功结果

同样,我可以将shell插入服务器并执行命令,以验证服务器是否可以访问github.com

在工作站端,我可以毫不费力地克隆、拉取和推送代码

但是,当我尝试运行capistrano部署脚本时,该脚本会尝试执行第一次获取(或克隆),并出现“无法找到[commit SHA hash]”错误

自上次从客户端部署以来,部署脚本没有更改

以下是cap部署的输出:

  * 2012-11-14 18:52:34 executing `dev'
  * 2012-11-14 18:52:34 executing `setbranch'
  * 2012-11-14 18:52:34 executing `deploy'
  * 2012-11-14 18:52:34 executing `deploy:update'
 ** transaction: start
  * 2012-11-14 18:52:34 executing `deploy:update_code'
    updating the cached checkout on all servers
    executing locally: "git ls-remote git@github.com:XXX123/reponame.git master"
    command finished in 2490ms
  * executing "if [ -d /home/serverusername/dev.site.com/code/shared/cached-copy ]; then cd /home/serverusername/dev.site.com/code/shared/cached-copy && git fetch -q origin && git fetch --tags -q origin && git reset -q --hard 8d28f09e2b85ebac6da912-github-commit-sha && git clean -q -d -x -f; else git clone -q git@github.com:XXX123/reponame.git /home/serverusername/dev.site.com/code/shared/cached-copy && cd /home/serverusername/dev.site.com/code/shared/cached-copy && git checkout -q -b deploy 8d28f09e2b85ebac6da912-github-commit-sha; fi"
    servers: ["server.alias"]
    [server.alias] executing command
 ** [server.alias :: out] error: unable to find 8d28f09e2b85ebac6da912-github-commit-sha
 ** fatal: object 8d28f09e2b85ebac6da912-github-commit-sha not found
    command finished in 1681ms
 *** [deploy:update_code] rolling back
  * executing "rm -rf /home/serverusername/dev.site.com/code/releases/20121115025239; true"
    servers: ["server.alias"]
    [server.alias] executing command
    command finished in 293ms
failed: "sh -c 'if [ -d /home/serverusername/dev.site.com/code/shared/cached-copy ]; then cd /home/serverusername/dev.site.com/code/shared/cached-copy && git fetch -q origin && git fetch --tags -q origin && git reset -q --hard 8d28f09e2b85ebac6da912-github-commit-sha && git clean -q -d -x -f; else git clone -q git@github.com:XXX123/reponame.git /home/serverusername/dev.site.com/code/shared/cached-copy && cd /home/serverusername/dev.site.com/code/shared/cached-copy && git checkout -q -b deploy 8d28f09e2b85ebac6da912-github-commit-sha; fi'" on server.alias
(我已经更改了输出代码中的一些名称以投影客户端。)

我最初在Windows Vista PC上安装时遇到了这个问题。我认为Windows是个问题,然后我安装了一个Ubuntu虚拟机,很快就安装并运行了,我得到了同样的结果


有人能帮忙吗?

我同意伯克斯的说法,你的cap配方可能找错了SHA,但既然你报告说它没有改变,我就放弃这种可能性,因为它最近发生在我身上:

确保分支上仍然存在SHA

我们改写了我们的一些历史,而之前的SHA已不在回购协议中。我会在git日志中查找SHA。只创建一个一次性分支并重置为SHA
git checkout-b lost_SHA
&
git reset-hard 8d28f09e2b85ebac6da912可能会更快。如果找不到SHA,Git会抱怨的


您的脚本可能没有更改,但repo更改了。

git reset-q--hard 8d28f09e2b85ebac6da912 github commit sha
似乎是错误的,看起来应该是
git reset-q--hard 8d28f09e2b85ebac6da912
。你能找到那个字符串是在哪里构建的吗?如果你试图通过Capistrano的外壳从git中拉出来会发生什么?