混帐推什么推(Git push pushes nothing)

2019-10-19 13:43发布

我有2个远程回购协议:一个在到位桶,另一个在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

我把这个建议不能推到仓库在EC2上-无法解析主机名添加EC2作为远程混帐回购协议。

这里是推之一:

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

Answer 1:

你有你的EC2实例创建的回购协议是一个裸露的回购协议。 所以,正因为如此,你将不会看到任何代码文件那边,只有git blobs您的回购。 检查这个和这个 。

该方法检查是否实际上正在推的代码会

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

在上述过程之后,你把任何新代码将可在这里。

编辑

在你的情况,你已经在使用到位桶,所以我建议探索这个工作流程 - 从克隆的到位桶回购,并使用到位桶为基准点,无论是在EC2上,并从本地开发环境。 这将释放你服务器上的任意备份相关的麻烦的。 您可以到位桶添加多个SSH密钥,所以你需要生成你的EC2的钥匙,并添加公钥到位桶。

所以在这种情况下,

  1. 从开发推代码到位桶
  2. SSH连接到EC2
  3. 在EC2上,无论是使用克隆到位桶回购git clone https_bitbucket_url
  4. 或在EC2上设置SSH密钥和现在使用git clone ssh_bitbucket_url
  5. 或到一个新的非裸露的回购协议,添加一个新的远程使用到位桶URL。


文章来源: Git push pushes nothing