網頁

2013年12月24日 星期二

建立 Git 的 client server 環境 <透過ssh>


Git 是一個 版本控管系統 Version Control System
可達成 分散式 多人開發專案的功能
詳細 可參考許多網路文章 這邊就不累述了

本教學是建立在透過ssh來作 git 管控
通常透過這種模式 常有 權限上的問題
最好的解決方法 就是...在server上 就只有一個git user
所有的版本控制都執行在 git 的user上....

不過放心!
就算用同一個user ,在commit 時 紀錄的還是 client 當下的使用者
所以 依然可以達成 專案控管 人員控管的效果 詳情也可參考...文章最底下連結

1. 建立遠端Git 資料夾 並建立server環境

[server]
mkdir project.git
cd project.git
git init --bare --shared

2. client 直接 clone下來

[client]
git clone git@domain:/home/git/project.git
通常會看到這段 得知現在是一個空的 git 專案
warning: You appear to have cloned an empty repository.

3. 建立branch

[client]
cd project
git checkout -b master
git push -u origin master
這邊通常會遇到一個問題
error: src refspec master does not match any.
error: failed to push some refs to 'git@domain:/home/git/project.git'
原因在於 git 的push 不允許 push 空的資料夾
在這邊建議新增 .gitignore 的檔案

4. 建立 .gitignore 

[client]
vim .gitignore
內容先寫入
# Ignore All
/*

# But
!.gitignore
!pom.xml
!src/
add & commit
[client]
git add -A (這邊-A代表所有檔案)
git status (這邊可以看到現在狀況,會發現建立一個新檔案)
git commit -m "add new file test"
此時重新push後就會成功了
[client]
git push -u origin master

5. Phelim 小筆記

如果Git在Eclipse上開發的時候 有用到tag
小弟不才 不知道 在哪控制...所以 還是自己command吧 = =
git push --tags

若是新增 .gitignore 之前已經 add 過不想追蹤的檔案
那在改好 .gitignore 之後要先清 cache

git rm -r --cached . 
將 remote 端的 branch pull 到自己 local 並建立新的 branch
git checkout -b {new Branch} origin/{remote Branch} 

Done

基本的 client server環境就完成了

參考http://blog.longwin.com.tw/2011/03/build-git-env-share-over-ssh-2011/

1 則留言: