git server on ubuntu

ubuntu 14.04 LTS

1
2
3
# sudo add-apt-repository ppa:git-core/ppa && sudo apt-get update #如果要安裝最新版就要先裝ppa
sudo apt-get install git git-core
git --version

on server

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#建立git server所使用的路徑。/opt/git也可以。
cd /var
sudo mkdir git

sudo groupadd git #這裡使用群組的方式控制存取git server的權限
sudo usermod -a -G git useraccount # useraccount要改成要存取git server的帳號。每次有新的使用者要加入時也要做一次。

cd /var/git
sudo mkdir new_project.git
cd new_project.git
sudo git init --bare --shared
#修改專案路徑的owner和權限,每次建新專案的路徑時都要做。
sudo chgrp -R git /var/git
sudo chmod g+rwx -R /var/git

on client

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#第一次使用git時會被強制要求提做識別資訊。雖然之後要改也不是不是,可是git log裡會是舊的資訊。
git config --global user.email "useraccount@gmail.com"
git config --global user.name "useraccount"

#建立local的專案路徑並關連到git server
cd ~
mkdir new_project
cd new_project
git init
git remote add origin ssh://useraccount@serverhost/var/git/new_project.git/

#push到git server
git status
git add .
git commit -m 'first commit'
git push origin master

#若發生error: src refspec master does not match any. 那是因為不允許push空目錄。隨便加個檔案就好。
touch README.md
git status
git add README.md
git commit -m 'add README.md'
git push origin master
git log

#有時git server上的專案已有內容時,push會出錯。必需先pull下來。
git pull origin master
git log