使用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://stackoverflow.com/questions/940533/how-do-i-set-path-such-that-ssh-userhost-command-works