Git push什么也没推

时间:2014-03-15 13:40:40

标签: git amazon-web-services ssh amazon-ec2

我有2个远程回购:一个在bitbucket,另一个在amazon ec2。我最近添加了第二个。

git remote -v

ec2 ubuntu@xx.xx.xx.xx:/home/ubuntu/my_app.git (fetch)
ec2 ubuntu@5xx.xx.xx.xx:/home/ubuntu/my_app.git (push)
origin  ssh://git@bitbucket.org/me/my_app.git (fetch)
origin  ssh://git@bitbucket.org/me/my_app.git (push)

当我推动原点时效果很好。但是当我推向ec2时,它似乎运作良好,但是通过ssh看不到它推动的任何东西。我已经完成了2次,但我没有任何消息来源。 这是ec2上的一个git目录:

ubuntu@ip-xx-xx-xx-xx:~/my_app.git$ ls -al
total 40
drwxrwxr-x  7 ubuntu ubuntu 4096 Mar 15 01:52 .
drwxr-xr-x  6 ubuntu ubuntu 4096 Mar 15 01:50 ..
drwxrwxr-x  2 ubuntu ubuntu 4096 Mar 15 01:52 branches
-rw-rw-r--  1 ubuntu ubuntu   66 Mar 15 01:52 config
-rw-rw-r--  1 ubuntu ubuntu   73 Mar 15 01:52 description
-rw-rw-r--  1 ubuntu ubuntu   23 Mar 15 01:52 HEAD
drwxrwxr-x  2 ubuntu ubuntu 4096 Mar 15 12:04 hooks
drwxrwxr-x  2 ubuntu ubuntu 4096 Mar 15 13:30 info
drwxrwxr-x 10 ubuntu ubuntu 4096 Mar 15 13:30 objects
drwxrwxr-x  4 ubuntu ubuntu 4096 Mar 15 01:52 refs

我接受了这个建议Can't push to repository on EC2 - Could not resolve hostname,将ec2添加为远程git仓库。

这是推动之一:

$ git push ec2 master
Counting objects: 9, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 749 bytes | 0 bytes/s, done.
Total 6 (delta 3), reused 0 (delta 0)
To ubuntu@xx.xx.xx.xx:/home/ubuntu/my_app.git
   123..123abc  master -> master

注意:只有一个分支,gitk正确显示所有内容。它只是没有把任何东西推向ec2。

1 个答案:

答案 0 :(得分:2)

您在EC2实例上创建的仓库是一个裸仓库。因此,您不会在那里看到任何代码文件,只有您的回购邮件的git blobs。查看thisthis

检查代码是否实际被推送的方法是

ssh ubuntu@xx.xx.xx.xx #log-in to your EC2 server
git clone my_project my_project.git

现在在my_project文件夹中,您将找到签出的实际代码。

因此,在这种情况下,您的正常工作流程将类似于

git push ec2 master #from your dev machine
ssh ubuntu@xx.xx.xx.xx #log-in to your EC2 server
cd my_project
git pull origin master #after last clone, the original bare repo became the origin repo for this clone

在上述之后,您推送的任何新代码也将在此处提供。

<强> 修改

在你的情况下,你已经在使用bitbucket,所以我建议探索这个工作流程 - 从bitbucket克隆repo,并使用bitbucket作为参考点,在ec2和本地开发环境中。这将使您免受服务器上任何与备份相关的麻烦。您可以在bitbucket上添加多个ssh密钥,因此您需要在ec2上生成密钥并将公钥添加到bitbucket。

所以在这种情况下,

  1. 将代码从您的Dev推送到bitbucket
  2. Ssh to ec2
  3. 在ec2上,使用git clone https_bitbucket_url
  4. 克隆bitbucket repo
  5. 或者在ec2上设置ssh键,现在使用git clone ssh_bitbucket_url
  6. 或者使用bitbucket URL添加新的远程数据库。