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

Cos*_*min 5 git remote-server git-remote

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

谢谢.

tor*_*rek 5

哇,坚持下去.让我们备份一些.你是"git"的新手,所以你需要一些基础知识!:-)

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

  • 一个"常规"仓库,你在其中工作.您和其他人都会制作您自己的版本.
  • 一个"裸"的回购,只供你和其他人协调工作.只有其中一个.

"裸"存储库没有任何人可以做任何工作的地方.这就是它"裸露"的原因 - 是什么使它成为一个"推"到的安全的地方.用力推一些非裸露的回购问题是这样的(GIT实际上阻止你,有error: refusing to update ...,但它是什么问题是,如果混帐让你这么做):

  1. 爱丽丝正在她的回购中工作.她检查了一些分支和编辑文件config.
  2. 鲍勃正在他的回购中工作.他检查了同一个分支并进行了编辑config.
  3. Bob先完成编辑config,然后将更改推送到Alice.
  4. 爱丽丝的变化被消灭了,取而代之的是鲍勃的变化.哎哟!

通过不让任何人"进入"它,一个裸存储库回避了这个问题.

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

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

sharedserver$ cd /place/where/bare/repos/go
sharedserver$ git clone --bare ssh://cosmins.machine.name/path/to/initial project.git
Run Code Online (Sandbox Code Playgroud)

现在"sharedserver"已经拥有了裸机/place/where/bare/repos/go/project.git,而你(以及爱丽丝和鲍勃等等)就可以git clone了.

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

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


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