Git
是一個開源的分布式版本控制系統,可以有效、高速地處理從很小到非常大的項目版本管理,是 Linus Torvalds 為了幫助管理 Linux 核心開發而開發的一個開放源碼的版本控制軟體。由于其分布式的特點,我們完全可以隻在本地儲存整個項目倉庫,但考慮多人協作的需求,一般情況是建立一個遠端倉庫,項目的所有開發者都圍繞這個遠端倉庫進行同步和送出。雖然Github已經免費提供了這樣的遠端倉庫給使用者,但這種倉庫一般是全網公開,即所有人都可以看到裡面的送出。如果我們自己有雲主機(最好是Linux系統)的話,要搭建一個Git伺服器建立遠端倉庫并不難,現在讓我們開始吧。
遠端倉庫
搭建Git伺服器不需要什麼複雜的工具,因為git這個工具已經包括所有的功能。
安裝git
一般Linux的發行版已經内置git,如果沒有的話安裝一下
sudo apt-get install git
sudo adduser git
該使用者是用來運作我們
git伺服器的,在雲主機上與我們的普通使用者區分。當我們的本地git用戶端與遠端倉庫互動時,雲主機上用來運作git程式的使用者就是我們剛添加的git了。對該使用者設定一下密碼:
sudo passwd git
禁用登陸git
由于使用者git主要作為倉庫使用,一般人員不可以也不應該登陸和進入git,是以使用工具git-shell禁止使用者git登陸shell。
先在/etc/shells中加入/usr/bin/git-shell作為可用shell;
sudo vim /etc/shells
然後改變使用者git的預設shell。
sudo chsh git -s git-shell
建立倉庫由于使用者git已經禁止登陸了,我們直接使用root權限在/home/git目錄上建立所有遠端倉庫的目錄srv/
sudo mkdir /home/git/srv
此時可以在srv/上建立一個空的遠端倉庫,指令為:
sudo cd /home/git/srv
sudo git init --bare elephant.git
其中--bare參數表示裸倉庫,一般會将遠端倉庫初始化為裸倉庫。
現在最好設定好倉庫的權限,由使用者git來管理,其他使用者無管理權限。
sudo chown -R git /home/git/srv
sudo chmod -R 770 /home/git/srv
用戶端登陸現在用戶端需要與遠端倉庫同步,可以用ssh進行登陸,而且git也支援ssh連接配接。
用戶端需要建立ssh-key,使用ssh-keygen建立公鑰私鑰
ssh-keygen -t rsa -C "[email protected]"
Windows一般把生成的公鑰私鑰放在
C:Usersxxxx.ssh\
把.sshid_rsa.pub(公鑰)的内容拷貝出來,放置到雲主機的git使用者的/home/git/.ssh/authorized_keys()中,表示已認證過的公鑰。
此時,在本地git用戶端則可以使用以下指令拉取到遠端倉庫了
git clone git@server:srv/elephant.git了
上面的倉庫位址中,git表示雲主機的使用者git,server表示主機位址,即雲主機的ip,加上後面的内容則表示雲主機上的/home/git/srv/elephant.git這個裸倉庫。