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之動作。

沒有留言: