Git推送/克隆到新服务器


127

我正在学习Git,有些事情我无法解决。在Mac上本地创建和使用git存储库后,可以将副本推送到其他位置的另一台服务器吗?我在防火墙后面,因此很遗憾,我无法git clone从另一台计算机上运行。

Answers:


137
  1. git remote add 名称 网址
  2. git push 名称 分支

例:

git remote add origin git@github.com:foo/bar.git
git push origin master

请参阅文档git push-您可以将远程设置为给定分支的默认远程;如果不这样做,这个名字origin就很特别。只是git push单单会做同样的git push origin thisbranch(无论何种分支你上)。


7
为了更接近“推送克隆”的效果,而不仅仅是_branch_git push -u --all我们可以省略,origin因为它是用于推送的默认假定名称,并且-u还将跟踪远程分支。
cregox 2011年

13
在服务器上使用创建一个空的裸存储库,git init --bare /foo/bar.git然后将您的本地存储库推送到那里就足够了(例如此答案)。您无需将任何已压缩/已压缩的内容传输到服务器。
OderWat 2012年

1
借调OderWat。例如,在登录到远程服务器(即git@github.com)时执行“ git init --bare foo / bar.git”,然后“远程源”将有一个目的地。对于github示例,我认为您可以使用github的Repository / Add Web界面,然后遵循其提供的“从命令行推送现有存储库”建议。Github建议使用“ -u”作为跟踪参考。
戴夫X

该方法可能是规范的,但它很钝并且使git的可用性降低。我爱我一些混帐,但老天爷它有一些用户界面的问题..
罗斯·罗杰斯

我随意删除了添加到原始问题中的“ EDIT”段落,使该过程看起来像可疑的。我认为不是,应该是评论,而不是问题编辑。
8

75

您可能想要做的是首先在本地计算机上对存储库进行裸克隆

git clone --bare /path/to/repo /path/to/bare/repo.git  # don't forget the .git!

现在,使用tar / gzip或任何您喜欢的存档工具存档新的repo.git目录,然后将存档复制到服务器。

在服务器上取消存档存储库。然后,您需要在本地存储库中设置一个远程服务器:

git remote add repo-name user@host:/path/to/repo.git #this assumes you're using SSH

然后,您可以使用以下命令推入和退出远程仓库:

git push repo-name branch-name
git pull repo-name branch-name

4
您能解释一下“别忘了.git!”的评论吗?将.git添加到文件夹末尾的意义何在?我什么时候应该这样做?只是约定?
lumbric 2011年

5
的“git的”仅仅是用于识别裸git仓库非官方标准
格兰特Limberg

3
我没有遵循这个想法...这不会破坏设置git服务器并实际使用它来“传输/复制/保持同步/备份”而不是压缩并使用其他方法的全部目的吗?
cregox 2011年

1
这正是我所需要的,因为原始存储库位于无法访问要推送到的服务器所在网络的网络上。这使我可以将存储库放在可以访问的盒子上。
michaeltwofish 2012年

3
@Cawas,您只需手动压缩/复制/提取存储库一次。之后,您所需要做的就是git push和pull。
备用字节

9

有许多种移动存储库的git bundle方法,如果网络可用性不足,这是一种不错的方法。由于Git存储库实际上只是一个充满文件的目录,因此您可以通过以.git最适合您的方式制作该目录的副本来“克隆”该存储库。

最有效的方法是在某个地方使用外部存储库(使用GitHub或设置Gitosis),然后使用git push


7
remote server> cd /home/ec2-user
remote server> git init --bare --shared  test
add ssh pub key to remote server
local> git remote add aws ssh://ec2-user@<hostorip>:/home/ec2-user/dev/test
local> git push aws master

我喜欢您回答的简单性,但不确定是否是我需要的。我在GitHub上已有一个GIT存储库,现在还想将我们的Ubuntu服务器(已安装GIT)推送到实时文件中。您可以添加一些注释以使过程更清晰吗?
戴夫·埃弗里特

1

您可以将分支推送到远程服务器,例如github。您首先必须进行初始项目设置,然后克隆您的项目并:

git push <remote repo> <your branch>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.