a.Ubuntu中Git服务器搭建
http://blog.csdn.net/ice520301/article/details/6142503
b.Windows安装Git客户端工具
http://blog.csdn.net/csfreebird/article/details/8011783
c.gitosis和tortoisegit配置证书的问题
http://blog.sina.com.cn/s/blog_591e8adf0100w4vm.html
配置gitosis和tortoisegit,使用tortoisegit的puttygen工具生成个人证书连接gitosis管理的git。
gitosis管理git虽然原理也是通过ssh连接git服务器的,但是它管理的用户并不需要在服务器上存在实际的linux用户,客户端通过git用户和个人私钥访问git服务器。
这样的好处有2点:
1.只有拥有个人私钥的用户才能访问git。
2.git用户的密码也不需要透露给客户端用户。
客户端生成个人的公钥通过gitosis-admin上传到gitosis中后,gitosis会做自动一个公钥转发
可以查看/home/git/.ssh/authorized_keys文件,该文件中保存了每个用户的公钥信息。
本地通过tortoisegit连接git服务器的时候选择puttygen生成的个人私钥连接就可以了。
clone的时候经常会出现ERROR:gitosis.serve.main:Repository read access denied这个错误,网上多是说因为密钥文件名一致的问题,但是我的环境是因为以下2个原因:
1.生成的公钥文件,上传到gitosis-admin之前应该做一个转换,因为这个公钥是在windows下做的,linux不能正确识别。
转换方法: 在linux下
ssh-keygen -if windows的公钥文件 > 新的linux的公钥文件。
2.clone的路径的问题:之前clone的时候一般带上全路径,比如git clone git@server:/home/git/repositories/projectname
现在不需要带全路径 git clone git@server:projectname 即可。
d.Git fetch和git pull的区别
http://blog.csdn.net/hudashi/article/details/7664457
Git中从远程的分支获取最新的版本到本地有这样2个命令:
1. git fetch:相当于是从远程获取最新版本到本地,不会自动merge
git fetch origin master git log -p master..origin/master git merge origin/master
以上命令的含义:
首先从远程的origin的master主分支下载最新的版本到origin/master分支上
然后比较本地的master分支和origin/master分支的差别
最后进行合并
上述过程其实可以用以下更清晰的方式来进行:
git fetch origin master:tmp git diff tmp git merge tmp
从远程获取最新的版本到本地的test分支上
之后再进行比较合并
2. git pull:相当于是从远程获取最新版本并merge到本地
git pull origin master
上述命令其实相当于git fetch 和 git merge
在实际使用中,git fetch更安全一些
因为在merge前,我们可以查看更新情况,然后再决定是否合并
阅读(1242) | 评论(0) | 转发(0) |