2012年5月17日 星期四

Git | 本機端簡易工作流程

精神 

分散式資料庫,用許多分支來管理進度和隨時 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: shesee 
Date: 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

沒有留言:

張貼留言