精神
分散式資料庫,用許多分支來管理進度和隨時 rollback,妥善的多開 branch 是好事,多多 commit 而且儘量詳實是好事。
初始
打開 Git bash,在命令列下進入要版本控管的專案資料夾底下,這裡的預設根目錄是 C 槽,所以假設在 C 槽放了一個 project 資料夾要控管,此時應該輸入
$ cd project $ git init
輸入 git init 之後,會在 project 資料夾中產生一個.git 的隱藏資料夾,
這表示這個資料夾已經變成 local 端的倉庫了(Repository,簡稱 Repo)
之後檔案有變動 Git 都會察覺。
然後在這個資料夾下面,放入第一個 README,並且 commit。
$ touch README $ git add . $ git commit -m 'This is first commit for project'
*- 指令解說 -*-
git add. #add:把更動過的檔案 add 進來給 Git 管理 “.”代表全部
git commit –m ‘YOUR COMMIT DESCRIPTION’
#把 add 進來的檔案 commit 起來,接下來會生成 commit 且給予很長的版本號
這時候打 git log 指令會出現這段字
$ git log commit 8aab40a0cbc6e895a90eadef5dccd26c10c75d45 Author: sheseeDate: Wed May 16 13:56:41 2012 +0800 This is first commit of PROJECT
第 2 行 commit 後面 8aab40...一串字就是自動產生的版本號,
之後要呼叫它回來都可以使用前四碼”8aab”。
下面還有作者(email),commit 日期,以及 commit 敘述
(看就知道這時候儲存的時候進度是在幹嘛)。
Commit 的意義
就像是打電動一邊有進度一邊要存檔一樣,一有任何的進度之後就 commit,可以確保你隨時失敗以後可以讀取各個不同時期的進度重來...XD
所以新開 branch 要 commit,merge 前要 commit,
總之除了程式碼有改變的時候是你可以隨時選擇何時存檔外,
只要發出重要的 git 指令前,如果你沒有儲存遊戲進度,
聰明的Git 都會發出 error 強迫你 commit 完才能繼續下一步來確保你的安全。
README 的意義
只是一個習慣 習慣性會在 README 中簡述整個 project 的功能、關於作者、安裝方法、使用方法、其他事項等等等。
branch(分支)是 Git 的精髓所在
Git 之所以最為知名於 Source code management 工具,就是他的精神在於
- branch 非常好開
- merge 非常容易
相較於其他開 branch 要小心翼翼然後merge 困難的工具例如 SVN,
Git 開起 branch 幾乎沒有成本,隨便你用,用完 merge 就刪掉,
一次開到一百支都沒問題(如果真的有那個需要的話),
妥善運用 branch 來管理 coding 的過程,將會避免掉不少程式碼炸掉的悲劇。
但是我們不用這麼精細的控管,下面簡單的以兩條 branch 支線的方式來管理程式碼就好。
一開始的 branch – master
在 git commit 之後,基本上這已經是一條 default 的 branch 叫做 master 了,通常為了避免以後的悲劇,
第一個動作就是再多開一條 branch,這條線叫做 develop。
$ git branch develop $ git checkout develop
-*- 指令解說 -*-
git branch xxxx #開一條 xxxx 的 branch
git checkout xxxx #把現在正在做的 branch 切換到 xxxx 去
develop 支線
checkout 到 develop 支線以後做的事情還是差不多,繼續 coding,有需要的時候 commit 一下進度,就是一直使用
$ git add . $ git commit -m 'blah blah'
如此而已,輸入
$ git log
之後可以看到所有版本號的清單。
程式爆炸了,我想要謝夫羅德一下
假設我從第一個 develop 版本(版本號 8aab....)之後做的事情都是錯的,查看版本號,確認要回到的進度,鍵入
$ git checkout 8aab
就可以時光倒流了。
事情差不多了...
等到 develop 支線確認完成之後,就要把進度讓 master 跟上。之所以不動 master 的原因很簡單,develop 就算全炸光了,
你還是能夠很篤定 master 那邊是安全無虞的。
現在要把 develop 支線 merge 回 master 支線: 首先,切換 branch 到 master
$ git checkout master
然後merge
$ git merge develop
以圖來示意的話,我們就是做了這樣的事情 ---
待續─Git簡易遠端協同工作流程
May 18th, 2012
shesee@Taipei
沒有留言:
張貼留言