创建一个远程Git存储库并使用已存储在远程位置的文件填充它

时间:2014-01-30 18:32:11

标签: git remote-server git-remote

我是Git的新手,我将开始为现有的Web应用程序开发新模块。此应用程序目前托管在Web服务器上,我想使用Git作为版本控制工具。我使用git init --bare newdev.git创建了一个新的裸存储库,但我不知道如何添加服务器上已有的文件。

谢谢。

3 个答案:

答案 0 :(得分:5)

哇,坚持住。让我们备份一些。你是“git”的新手,所以你需要一些基础知识! : - )

出于您的目的,有两种存储库:

  • 你工作的“常规”回购。你和其他人都会制作你自己的版本。
  • “裸”回购,仅供您和其他人协调工作。只有其中一种。

“裸”存储库没有任何可以做任何工作的地方。这就是它“裸露”的原因 - 是什么使它成为一个“推”到的安全的地方。推送到一些非裸机的问题就是这个(git实际上会阻止你,使用error: refusing to update ...,但是如果git允许你这样做就会出现问题

  1. Alice正在她的回购中工作。她检查了一些分支和编辑文件config
  2. 鲍勃在他的回购中工作。他检出同一个分支,并编辑config
  3. Bob首先完成编辑config,并将其更改推送给Alice。
  4. 爱丽丝的变化被彻底消除,取而代之的是鲍勃的变化。哎哟!
  5. 通过不让任何人“进入”它,一个裸露的存储库回避了这个问题。

    还有另外一个问题,那就是:你怎么得到这个东西 - 首先是裸机回购?它没有工作的地方!

    答案是:你没有从那里开始,你从你自己的回购开始,没有其他人有副本。你在那里写了一些初始版本。然后在共享服务器上通过复制创建一个新的裸仓库:

    sharedserver$ cd /place/where/bare/repos/go
    sharedserver$ git clone --bare ssh://cosmins.machine.name/path/to/initial project.git
    

    现在“sharedserver”在/place/where/bare/repos/go/project.git中有一个裸仓库,而你(以及Alice和Bob等)可以git clone。{/ p>

    (“共享服务器”可以是类似github的东西,它有一种不同的方法来创建原始的非共享的共享仓库。我不使用github,也不能真正说出任何相关内容。 )

    (可以将常规的,非裸的repo转换为裸的repo,反之亦然,但这有点痛苦。只需通过git clone --bare创建裸的。)


    另一种侧重“工作被覆盖”问题的方法是根本不使用push。如果每个人都在对等共享系统中合作,那么Alice可以从Bob和Cosmin pull获得,而Bob可以从Alice和Cosmin中pull,等等。请注意,这会导致大量人员pull,这就是共享服务器出现的原因。你们都可以在那里见面,而不必总是去彼此的家。

答案 1 :(得分:3)

您要做的只是在现有文件所在的文件夹中git init(无 - - )。

然后git add .(或git add filename.ext个别文件)。最后git commit

提交文件后,您可以使用git clone将存储库放到另一台计算机上,可能通过ssh网址,例如git clone ssh://example.com/path/to/repo/.git ./


从评论中编辑:

如果两个存储库位于同一分支上,则不能push从一个存储库到另一个存储库。您有三种选择:

  1. 查看您尝试推送到
  2. 的存储库上的其他分支
  3. 创建您尝试推送到“裸”存储库的存储库
  4. pull从源存储库更改为目标存储库
  5. 在三个选项中,选项#3是使用git时最常见的做法。

    选项#2更类似于像Subversion这样的非分布式系统,或者像Github.com这样具有“权威”代码副本的git系统。

    选项#1实际上是一个黑客攻击,除非你别无选择,否则不应该使用它。


    要从现有存储库创建裸存储库,您可以手动转换存储库(existing SO question w/good answer),也可以git clone --bare /path/to/my_repo/.git ./my_repo.git创建新的干净裸存储库。我会推荐第二个选项,它更安全/更干净,你不会弄乱现有的存储库,但你可以做任何最好的事情。

答案 2 :(得分:1)

是的,在sources文件夹中使用git init,将所需文件添加到存储库,然后将存储库克隆到本地计算机。由于您已经创建了一个裸存储库,因此您应该将.git文件夹移开,当您确定不需要时,可以将其删除。