搭建git伺服器需要一台執行linux的機器,我的機器的系統是ubuntu 14.04,下面以我的機器為例介紹下git伺服器的搭建過程,最後介紹乙個新專案的建立過程。
其中openssh-server和opensssh-client使git能夠使用ssh協議在客戶端和伺服器間傳輸檔案。
$ sudo apt-get install git openssh-server openssh-client
建立乙個git使用者,執行git服務。
$ sudo adduser git
進入git使用者主目錄,建立目錄.ssh,將所有開發者的ssh公鑰新增到authorized_keys中,一行乙個。假設已經獲得的公鑰存於臨時檔案中。
$ su git
$ cd
$ mkdir .ssh
$ cat /tmp/id_rsa.pub>>~/.ssh/authorized_keys
每個開發者獲取ssh公鑰方法:
在自己機器中,找到檔案~/.ssh/id_rsa.pub,如果該檔案不存在,則建立ssh key。
$ ssh-keygen -t rsa
檔案
~/.ssh/id_rsa.pub中存放的即為當前機器的ssh公鑰。
首先建立乙個裸倉庫(--bare),裸倉庫沒有工作區,因為伺服器上的git倉庫純粹是為了共享,所以不讓使用者直接登入到伺服器去改工作區,並且伺服器上的git倉庫通常以.git結尾。
$ cd /opt/git
$ mkdir project.git
$ cd project.git
$ git --bare init
需要注意的是,目前所有的開發者都能以系統使用者git的身份登入伺服器從而獲得乙個普通shell。若果想對此加以限制,需要修改passwd檔案中git使用者的shell值。
$ sudo vim /etc/passwd
找到類似下面的一行:
git:x:1001:1001:,,,:/home/git:/bin/bash
將其改為:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
這樣,git使用者只能利用ssh連線對git倉庫進行推送和拉取操作,而不能登入機器並取得普通shell,如果試圖登入,則會被拒絕。
$ ssh git@gitserver
fatal:interactive git shell is not enabled.
...
$ cd
$ mkdir project
$ git init
$ git add .
$ git commit -m "initial commit"
$ git remote add origin git@gitserver:/opt/git/project.git
$ git push origin master
$ git clone git@gitserver:/opt/git/project.git
$ cd project
work
$ git commit -am "describe your work"
$ git push origin master
假設git倉庫伺服器的主機名為gitserver,伺服器執行在內網。
$ sudo vim /etc/hosts
xx.xx.xx.xx(serverip) gitserver
即可將gitserver指向git倉庫伺服器
git伺服器沒有工作區,檔案都在倉庫目錄裡
git ls-files --with-tree=head 顯示目錄中有哪些檔案
git cat-file -p commit-id:file 顯示commit-id提交中file檔案的內容
簡單Git伺服器搭建
shell yum install gitshell useradd git etc passwd 將git使用者中最後 bin bash改為 usr bin git shell git x 1001 1001 home git usr bin git shell在客戶端使用ssh agent建立r...
搭建簡單的Git伺服器
建立乙個遠端的git倉庫其實最好的選擇就是使用github,國內也有類似的 gitcafe。但對於某些珍視 的商業公司,它們不希望在網上公開公司專案的 又不願意在github之類的 上使用付費功能 那就只有公司內部自己搭建一台git伺服器咯。一 安裝openssh和git 搭建git伺服器,需要所在...
git伺服器的簡單搭建
sudo adduser git 在home下建立了同名的資料夾 設定密碼 passwd gitvi etc passwd 將git x 1001 1001 home git bin bash 改為git x 1001 1001 home git usr bin git shell 會在當前的路徑下...