客户端:虚拟机+CentOS 6.3
看网上的教程都是先新建一个git用户吧, 其实用哪一个用户是无所谓的,我们在此也新建一个git用户和组,以后将所有的git项目全部放在这个git 用户家目录下,以便于管理。
服务器操作
1.adduser git passwd git
添加git 用户并设置密码
2.cd /home/git/ git init Test --bare
以root身份进入到git的家目录/home/git下,--bare选项的意思是裸仓库的意思,具体解释在文章下面。
客户端操作
1.cd /home/andy mkdir test git init
与上面--bare的区别,具体在文章下面。
2.新建一个文件并写入内容测试,然后使用git add 和git commit提交
3.执行git remote -v 命令查看服务器端,我这里已经添加了一个,空的情况下使用命令git remote add name [email protected]:/home/git/test , 我这里的name取名为git 不写的话默认名字是origin
使用git push 的时候需要指名这个名字所有我这里推送的时候就可以使用git push git branchname
git remote rm 命令也可以删除一个远端
4.现在我们就可以使用git push命令了,git push git master。OK!
操作中的问题:
--bare
git init --bare 命令所产生的裸仓库是这样的。
再看下git init 命令产生的仓库,包含有一个.git的隐藏目录,而这个.git目录中的内容就是上图中git init --bare所产生的内空。
分析:git init -bare 所产生的目录是裸仓库,只做记录,当你在git init --bare所产生的仓库中执行git status add commit 等改变仓库的操作时会提示错误,如下:
它只做记录,不能更改。所以git log git branch是可以使用的。
操作中的问题:
改变git 用户登录shell变为不可登录 vim /etc/passwd git:x:501:502::/home/git:/usr/bin/git-shell 禁止git 用户登录。
这样以后在添加项目的时候要使用root用户添加,添加完要一定要记得将仓库的 owner 和owner group变为git
在之前的步骤中,我们使用命令git remote add git [email protected]:/home/git/test 指名用户名是git
如果服务器仓库的owner和owner和你指定的不符合的话,当你使用git push等命令的时候会出现权限错误的问题。
操作中的问题:执行git push pull clone 操作不用输入密码
使用ssh-keygen命令使客户端在/home/andy/.ssh/目录下产生公钥id_rsa.pub和私钥id_rsa文件
将id_rsa.pub中的内容添加到服务器下git 用户目录下的.ssh/authorized_keys文件内,没有的话创建一个就可以。