2011年5月20日

How to upload the new or modified file to git server

在Git管理系統下,檔案分為四種狀態,untracked、unmodeified、modified以及staged。
此四種狀態可以使用git status指令來觀察,現在專案下的所有資料的狀態。


所有的指令所產生的動作,皆在Client端執行,直到git push這個指令,才是真正的上傳至server端。以下將把上傳之整個流程寫出。

新增檔案與上傳至server:

1.在專案資料夾,新增一個檔案之後,輸入git status,會出現以下畫面
# On branch master
# Untracked files:
# (use "git add ..." to include in what will be committed)
#
# test
nothing added to commit but untracked files present (use "git add" to track)

我們會看到Untracked files:,就字義上來說即為未追蹤之檔案,也就是說此檔案加入專案。

2.輸入git add test,並在次輸入git status。

# On branch master
# Changes to be committed:
# (use "git reset HEAD ..." to unstage)
#
# new file: test
#

Changes to be committed狀態則代表了此檔案已經加入專案了,現在檔案改變的部分是儲存在Client端的暫存區,還需新增註解之後,方可使用git push指令,將檔案upload到server上。

3.輸入git commit -m "this file is test",將檔案註解起來,並執行git status看現在檔案之狀態。
將會看到以下畫面

# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)

說明了 你已經註解了檔案,並指出跟原始檔差了一個註解。

4.執行git push將test檔案上傳至server,並且執行git status。

# On branch master
nothing to commit (working directory clean)

此時所顯示之結果,代表與server端同步。

至此,已經完成了新增檔案與上傳至server的動作。


修改與上傳檔案:


1.接下來,我們試著修改test檔案,新增一些內容,並執行git status,觀察test檔案狀態。

# On branch master
# Changed but not updated:
# (use "git add ..." to update what will be committed)
# (use "git checkout -- ..." to discard changes in working directory)
#
# modified: test
#
no changes added to commit (use "git add" and/or "git commit -a")

出現了一個新狀態,Changed but not updated:很明白的指出test被修改過,但是尚未updated,在此的updated所指的試client端的佔存區,並非指server。

2.執行git add test,並一樣輸入git status,觀察test檔案狀態。
# On branch master
# Changes to be committed:
# (use "git reset HEAD ..." to unstage)
#
# modified: test
#
可以看到git指示要我們為這個檔案加入註解。

3.輸入git commit -m "test modified",並輸入git status。
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)

看到跟server之最新版本相差一個註解。

4.最後已git push上傳至server,至此完成修改檔案與上傳至server之動作。

Read more...

Git 基本指令

git add:
新增/修改之檔案


git status
查詢專案資料夾下,所有檔案的狀態

git commit
註解,將修改後的檔案,新增註解。

git push
將註解過的檔案從暫存區上傳至 server

git pull
從server下載專案檔

git clone
從server 複製整個專案。此指令用於在client端,完全無此專案資料時。

Read more...

2011年5月12日

Git Server 簡易架設 - 使用SSH

這邊記錄了Git Server 利用SSH協定以及權限的架設流程
此方法較為快速,如果原本的Server上SSH是可以溝通的,那不到20分鐘就可以完成架設過程
但是缺點也是相對的明顯,因為利用了SSH權限,所以在專案的權限管理會有些麻煩,必須使用到Linux user的權限的權限管理。

P.S此篇目前只有可以run的流程而已,以後會新增更多有關git的文章

Server O.S: Ubuntu Server 10.04
Client O.S: Ubuntu Deaktop 10.04



所需條件:
1.當然最少區域網路要通(廢話 XD)
2.Terminal可以以SSH協定溝通



以下為Server端

第一步:
#apt-get install git-core
此為安裝git package,在Ubuntu系統需在最前方加上sudo指令,以super user權限執行

第二步:
#adduser git
新增git user

第三步:
#mkdir /home/git/test.git
在git家目錄下,新增專案資料夾,在此為test.git

第四步:
在test.git底下執行
#git --bare init

init為新增一個程式庫 或是 重新初始一個已經存在的程式庫
bare為指定現在工作的程式庫。


以下為client:

首先為push檔案的流程

第一步:
在要存放project的資料夾下,執行
#git init
新增.git資料夾
client 端所有git相關資料皆會在.git資料夾內,此資料夾為隱藏檔,須以ls -al指令才可看到

第二步:
#git add filename
新增要管理的檔案名稱

第三步:
#git commit -m '註解'
增加此專案之註解,註解須在' '內

第四步:
#git remote add origin ssh://git@Server IP Address/home/git/test.git
設定上傳server IP、使用者名稱 以及資料夾位置
在此使用者名稱為git 資料夾位置為 /home/address/git/test.git
Server IP Address則須看自己Server IP
如果輸入錯誤,可以至/home/git/test.git/.git/config做修改



第五步
#git push origin master
將設定管理的檔案上傳,在此會要求輸入密碼,密碼即為當初新增使用者git的密碼



最後使用
#git clone ssh://git@Server IP Address/home/git/test.git
來將上傳完成的檔案下載,已驗證是否成功

P.S client端步驟為第一次新增管理專案才需執行 之後僅需使用git push、git commit、git pull、git add等指令即可操作


Read more...