自己做项目可以用Github,给公司做,用github就不太好了,所以要自己搭建一个git,还是比较简单的,记录如下
以centOS为例
$ sudo yum install git
创建git用户,并为git用户增加sudo权限,再给git用户设个密码
$ sudo adduser git
$ sudo vim /etc/sudoers
git ALL=(ALL) ALL
$ sudo passwd git
收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。
$ cat /home/user/.ssh/id_rsa.hub
$ vim /home/git/.ssh/authorized_keys
生成rsa key的方法如下
$ ssh-keygen
选定一个git仓库,假定是/srv/project.git,在/srv/目录下执行下面命令
$ sudo git init --bare project.git
$ sudo chown -R git:git project.git
克隆
$ git clone git@server:/srv/project.git
推送
$ git commit -m 'initial commit'
$ git remote add origin git@gitserver:project.git
远程推送可能出现如下错误:
fatal: remote origin already exists.
解决:
$ git remote rm origin
$ git remote add origin git@gitserver:project.git
代码提交
$ git push origin master
代码提交可能出现如下错误
fatal: 'project.git' does not appear to be a git repository
解决:(首先确保相关文件git用户有读写权限)
$ vim .git/config
更改为下面的样子
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[branch "master"]
[remote "origin"]
url = git@gitserver:/srv/projects.git
fetch = +refs/heads/*:refs/remotes/origin/*
由于安全或者其它原因,我们可能会修改默认的SSH服务端口号,这时,在push或pull的时候会报如下错误
ssh: connect to host gitserver port 22: Connection refused
解决:
$ git remote set-url origin ssh://git@domain.com:3333/srv/project.git
也可以通过更改配置文件来解决
$ cat ~/.ssh/config
host newdomain
hostname domain.com
port 3333
出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成
$ vim /etc/passwd
git:x:501:501::/home/git:/usr/bin/git-shell
[1]搭建Git服务器
[2]修改了SSH默认端口之后,如何配置GIT
[3]Linode VPS 小组级 Git 服务器搭建