git将裸仓库移动到服务器上

摘抄

原文地址:http://blog.csdn.net/kaizi318/article/details/10165317

开始架设 Git 服务器前,需要先把现有仓库导出为裸仓库 — 即一个不包含当前工作目录的仓库。做法直截了当,克隆时用 --bare 选项即可。裸仓库的目录名一般以.git 结尾,像这样:

$ git clone --bare my_project my_project.git
Initialized empty Git repository in /opt/projects/my_project.git/

该命令的输出或许会让人有些不解。其实 clone 操作基本上相当于 git init 加 git fetch,所以这里出现的其实是git init 的输出,先由它建立一个空目录,而之后传输数据对象的操作并无任何输出,只是悄悄在幕后执行。现在my_project.git 目录中已经有了一份 Git 目录数据的副本。

整体上的效果大致相当于:

$ cp -Rf my_project/.git my_project.git

但在配置文件中有若干小改动,不过对用户来讲,使用方式都一样,不会有什么影响。它仅取出 Git 仓库的必要原始数据,存放在该目录中,而不会另外创建工作目录。

方法一、把裸仓库移到服务器上(实际上是将本地仓库.git复制到了服务端)

有了裸仓库的副本后,剩下的就是把它放到服务器上并设定相关协议。假设一个域名为 git.example.com 的服务器已经架设好,并可以通过 SSH 访问,我们打算把所有 Git 仓库储存在/opt/git 目录下。只要把裸仓库复制过去:

$ scp -r my_project.git user@git.example.com:/opt/git

现在,所有对该服务器有 SSH 访问权限,并可读取 /opt/git 目录的用户都可以用下面的命令克隆该项目:

$ git clone user@git.example.com:/opt/git/my_project.git

方法二、初始化本地仓库,并推送到服务端
echo # test >> README.txt   //创建一个文件
git init                    //初始化一个长仓库
git add README.txt          //添加该文件到仓库
git commit -m "first commit"    //提交添加的文件
git remote add origin git@server:/home/git/repo  //以git用户的身份,添加该仓库到服务端的/home/git/repo目录

git push origin master //推送该仓库到远程服务器

这样就将一个本地仓库推送到了服务端的/home/git/repo目录下






posted @ 2015-11-01 20:52  远洪  阅读(1425)  评论(0)    收藏  举报