2011-02-05

簡易git server架設教學 (用Ubuntu linux)

現在技術相關的文章移轉到 toyroom 了: 簡易git server架設教學 (用Ubuntu linux)
雖然這邊還不會刪掉,但歡迎到我的新部落格逛逛 :D



1. 安裝git:
sudo apt-get install git-core


2. 在server端建立放置所有projects的目錄:
我的習慣是放在/var/git
cd /var
sudo mkdir git


3. 在server端建立project:
步驟3,5,6是每開一個新project就要做一遍的,假設現在我開了一個專案叫new_project
cd /var/git
sudo mkdir new_project.git
# 如果是第二次新增project,記得也要改該資料夾的群組跟權限,相關步驟在step 4有寫
cd new_project.git
sudo git --bare init


4. 建立git的群組:
因為我放在/var之下,這邊要root權限,當你用你的帳號pull東西上去時,會爆權限不足。但是把他改成權限全開的話(chmod 777 ...)又很危險。所以我開一個git的群組,讓會傳東西的人加到這個群組。
sudo groupadd git
sudo usermod -a -G git your_login # your_login改成你自己的帳號。
# 下面這兩行,在每次新增新project時要對新的資料夾補做
sudo chgrp -R git /var/git
sudo chmod g+rwx -R /var/git


在local端,假設我的project資料夾是/path/to/your/projects/new_project

5. 初始化git:
cd /path/to/your/projects/new_project
git init

6. 把我們遠端的repository加到git remote:
git remote add origin ssh://your_login@your.host/var/git/new_project.git/
這邊的路徑要注意,別打成ssh://your_login@your.host:/var/git/new_project.git 
會爆以下錯誤:
ssh: Could not resolve hostname : Name or service not known
fatal: The remote end hung up unexpectedly


7. 把我們local的程式碼丟上去:(每次commit的例行步驟)
git add .
git commit -m '註解'
git push origin master

常用git指令小筆記:
git add 檔案名稱 #加到本次commit
git add -i #加檔案的互動介面
git status # 看準備要commit的檔案
git grep 關鍵字 # 在專案中搜尋關鍵字
git diff # 看本次變動
git log # 看log
git rm 檔案名稱 # 從準備要commit的檔案清單中去除,加-f參數強制刪除
git remote # 會列出來remote列表。總之就是git remote add new_remote ssh://... 。新增以後,打這個指令就會出現new_remote。名稱可以自己取,但如果需求單純的話,一般都習慣取作origin。



如果你懶得每次要一直打密碼,可以參考SSH免密碼登入

參考文章:
Debian Linux 架設使用 SSH 存取 的 Git Server
簡易git server 架設

9 comments:

  1. 1. sudo groupadd git
    2. sudo chmod g+rwx -R /var/git
    3. sudo usermod -G git your_login # your_login改成你自己的帳號。

    在1和2之间,好像需要改变group
    sudo chgrp -R git /var/git

    ReplyDelete
  2. 似乎是的,剛才看了一下我之前架好的server,group的確是git

    當時一邊架一邊做筆記的時候漏掉了:p

    感謝您 :)

    ReplyDelete
  3. 还有一个问题: 下面的 -a 参数很重要,不然就不能sudo了,呵呵。

    sudo usermod -a -G git your_login # your_login改成你自己的帳號。

    ReplyDelete
  4. 我的機器上還是可以sudo,不過還是加一下好了 :p

    感謝提供~

    ReplyDelete
  5. 要谢谢你。你的介绍是我找到的最简明和完整的。

    ReplyDelete
  6. Replies
    1. 你是說「如果你懶得每次要一直打密碼,可以參考SSH免密碼登入」這段嗎?

      如果不介意每次都要打密碼的話,可以不用設定這段(其實我剛開始摸索的時候也沒有設定)

      想了解SSH產生key的方式,除了文中的那篇,也可以看github的教學
      https://help.github.com/articles/generating-ssh-keys

      Delete
  7. 您好,看了您的文章之後很快地架起一個簡易的 git Server,您的文章簡明易懂,非常感謝 ^^

    ReplyDelete