自己åšé¡¹ç›®å¯ä»¥ç”¨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 æœåŠ¡å™¨æ建