本文參考了菜鳥(niǎo)教程中的git服務(wù)器搭建和git遠(yuǎn)程倉(cāng)庫(kù)創(chuàng)建固阁,文章流程簡(jiǎn)練可讀性強(qiáng)芝发,但仍有部分細(xì)節(jié)不清晰泼诱,導(dǎo)致操作失敗,這里就這些問(wèn)題加以補(bǔ)充完整咪奖。
按照菜鳥(niǎo)教程配置即可盗忱,其中第1、2步要注意的地方如下:
1.添加git用戶后$ useradd git -g git
必須設(shè)置密碼$ passwd git
羊赵,否則連接被拒趟佃;
2.創(chuàng)建證書登錄的時(shí)候,如下:
紅色線條標(biāo)記的收集所有用戶的公鑰,指的是本地PC?公鑰昧捷,位于pc_username/.ssh/文件目錄下(不同電腦可能不同)闲昭,注意.ssh為隱藏文件夾。如果.ssh目錄下沒(méi)有rsa文件則需要生成靡挥,參考如何創(chuàng)建公鑰
如果最后克隆倉(cāng)庫(kù)的時(shí)候出現(xiàn)如下提示
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)
請(qǐng)參考這里開(kāi)啟服務(wù)器對(duì)應(yīng)的服務(wù)并重啟sshd守護(hù)進(jìn)程
$ /etc/init.d/sshd restart
創(chuàng)建遠(yuǎn)程倉(cāng)庫(kù)
到這里我們的git服務(wù)器搭建就完成了,git服務(wù)器只作為共享資源的倉(cāng)庫(kù)序矩,不應(yīng)該在git服務(wù)器中對(duì)倉(cāng)庫(kù)資源做任何更改。為了管理資源跋破,我們需要?創(chuàng)建一個(gè)遠(yuǎn)程倉(cāng)庫(kù)簸淀,有以下兩種方式瓶蝴,
- git服務(wù)器上創(chuàng)建git庫(kù)->拉取到本地操作->推送到git服務(wù)器端
- git服務(wù)器上創(chuàng)建mytest.git倉(cāng)庫(kù)->本地已有倉(cāng)庫(kù):關(guān)聯(lián)本地倉(cāng)庫(kù)到git服務(wù)器的mytest.git倉(cāng)庫(kù),例:
$ git remote add origin git@0.0.0.0:/path/mytest.git
->推送到遠(yuǎn)端git倉(cāng)庫(kù)$ git push -u origin master
(第一次使用該命令租幕,將本地master和遠(yuǎn)程master分支進(jìn)行關(guān)聯(lián))
注意:一個(gè)遠(yuǎn)端git庫(kù)只能被關(guān)聯(lián)一次
在服務(wù)器上推薦使用 git init –bare 方法創(chuàng)建一個(gè)所謂的裸倉(cāng)庫(kù)舷手,之所以叫裸倉(cāng)庫(kù)是因?yàn)檫@個(gè)倉(cāng)庫(kù)只保存git歷史提交的版本信息,而不允許用戶在上面進(jìn)行各種git操作劲绪,如果你硬要操作的話男窟,只會(huì)得到下面的錯(cuò)誤(”This operation must be run in a work tree”),所以慎用git init在服務(wù)器上初始化倉(cāng)庫(kù)珠叔。
使用$ git push -u origin master
命令推送到遠(yuǎn)程分支并合并的時(shí)候常見(jiàn)錯(cuò)誤:
- 權(quán)限問(wèn)題
fatal: protocol error: bad line length character: This
是因?yàn)榘凑障聢D禁止了ssh登錄蝎宇,或者當(dāng)前用戶公鑰沒(méi)有加入/home/git/.ssh/authorized_keys文件
- 服務(wù)器git倉(cāng)庫(kù)所屬用戶未修改
insufficient permission for adding an object to repository database ./objects
在服務(wù)端新創(chuàng)建一個(gè)倉(cāng)庫(kù),倉(cāng)庫(kù)默認(rèn)屬于root用戶祷安,所以需要修改所屬用戶為git用戶,如下:
更多創(chuàng)建遠(yuǎn)程庫(kù)內(nèi)容請(qǐng)參考鏈接