Linux (scientific) 部署 git 服务器

来源:互联网 发布:淘宝商品下架后再上架 编辑:程序博客网 时间:2024/06/05 02:02


使用git作为自己的版本控制软件是件很愉快的事情,它能灵活管理一个团队项目。

如果对git还不是很了解,可以读读:

http://gitref.cyj.me/zh/

这个参考手册写得非常好!能帮助自己快速入门


废话少说,下面将将自己部署一个自己服务器的动机以及方法:

1.动机

在网上其实有很好用的github,只要注册一个帐号,就能免费使用一定的空间存储项目代码,但同时你的代码也是共享,任何人都能访问到(boss认为这样不行)。如果你需要私人空间,那么ok,信用卡开路。我是个穷学生,当然不干。

so,我想起了中心机房,安全免费。。。自己部署一个,岂不是很好?


2.方法

2.1 首先下载安装git,如下:

$ http://git-core.googlecode.com/files/git-1.7.9.tar.gz$ tar -zxvf git-1.7.9.tar.gz$ cd git-1.7.9$ ./configure$ make$ make install


2.2 初始化一个bare repository

$ cd mypath$ git init --bare mypro


2.3 建好仓库,可以试试往里push东东

$ mkdir mygit$ cd mygit$ git init$ touch helloworld$ git add helloworl$ git commit -m "first commit"           $ git remote add origin mypath/mypro/$ git push origin master


2.4 使用SSH 提交

在2.3中的提交其实是在同一台机器上的,要想能连接远程的server那么必须遵循一定协议(我用的是SSH)

2.4.1 克隆远程服务器项目

$ git clone yournNme@IP:/ServerRepositoryPath yourDirectory


2.4.2 push到远程

$ git remote add origin yournNme@IP:/ServerRepositoryPath $ git push origin master


2.4.3 关于ssh的一点补充

每次ssh到服务器时,都是要求验证的。但是可以通过密钥(yue),使得你的机器免检。

2.4.3.1 先将~/.ssh 下的文件mv到一个文件夹下(备份),然后执行在这个目录下执行

ssh-keygen -t dsa

将生成两个文件:私钥(id_dsa)和公钥(id_dsa.pub)

2.4.3.1 将公钥(id_dsa.pub) 拷贝到远程机器的~/.ssh/下,重命名authorized_keys。这样以来,拥有私钥的那台机器访问服务器时便不用密码了~~


2.5 安装时遇到的问题及解决方法

步骤2.3以前(包括2.3)和2.4.3都很容易就实现了,但是2.4.1和2.4.2那里遇到了问题,报错:

git-upload-pack: command not found

这一点google下很快就能明白,原因是git-upload-pack没有在non-login shell path中。通过在服务器端执行:

which git-upload-pack
获取git-upload-pack的存放路径(A)。

在客户端执行:

ssh yourName@IP echo \%PATH
获取non-login shell path (B)。

如果A不在B中,那么在clone时需要加上-u 参数:

git clone -u yourpath/git-upload-pack yourName@IP:PATH

这样能解决,但是,每次这样写太麻烦了,我们对server稍微设置下,在~/.bashrc中做如下改动:

export PATH=$PATH:your git-upload-pack's path[ -z "$PS1" ] && return

export语句一定要在

[ -z "$PS1" ] && return

之前,不然不会生效;做好这些后,

$ source ~/.bashrc

,接着再次使用命令:

ssh yourName@IP echo \%PATH

测试是否成功(我的行),如果path添加成功,则大功搞成,可以尽情commit,push~~~


这过程中参阅了很多别人的资料,下面列出,在此表示感谢!


参考资料:

http://shutiao2008.iteye.com/blog/315102

http://blog.csdn.net/foreverdengwei/article/details/7459856

http://stackoverflow.com/questions/940533/how-do-i-set-path-such-that-ssh-userhost-command-works

http://stackoverflow.com/questions/225291/git-upload-pack-command-not-found-how-to-fix-this-correctly


原创粉丝点击