iT邦幫忙

DAY 5
1

emacs的30天學習筆記系列 第 5

emacs 做中學第五天

今天是收假完上班的第一天,不少鐵人兄弟們,白天也可以po文,我偷偷看了幾篇,順便找了一些資料

這是linux 核心社群集會的團體照,有標識人名哦(貢獻者/開發者)。
原來的是要2001年的那張,臨時找不到。
這算是很有特色的專案管理,集合地球上一批hacker來做專案。
這批人麻煩之處,可能是just for fun的強調自我特色,而不見得是為錢做事,
所以也能最初在找人的時候,就因為個性因素被淘汰了。

想想,連Linus早期也在郵件論壇裏,發表一些措詞激烈的言論。

2001年的核心大會合照找到了,原來是關鍵字順新放錯了。

上面有一些大名鼎鼎且肚子也蠻大的長老級人物,除了Linus, 還有
Alan cox。
德國有一新成立的政黨,由平均30歲的IT相關人員運作。在這次的德國大選中,
以最高性價比進軍國會。創立了比透明還要透明的液態民主。政見議題都是公司辯論取得共識而來。

在自由軟體社群裏,除了分享的心,很有主見也是這群人的特色。


大部分的人用SCM(或VC ,version control),主要是減少備分的量,
舉個例子,因為資深tiptop同事(5年tiptop maintain經驗)建議的備分,
改動程式前,把原程式另存新檔備分,apmt540.4gl 改名成apmt540.4gl.20111011備分,通常3千行的程式,有的只變動5行,有的變動15~20行,這樣的備分,明顯的很浪費空間,因為沒變動的部分約佔95%。所以找個他心情好的時候,婉轉的跟老鳥講,可以用導入VC,因為在區網,所以用中央集中控管的架構,反而比較好,像
敝單位,就3個人,平常就各管各的,有人主管保稅系統,有人主管財務系統,資淺如我(中年的tiptop菜鳥,還沒用滿一年),就以改報表為主,或是一些檢核的邏輯。

由以上,人少時的VC 用法,就像時空機器,讓你可以回到過去。減少備分檔案的量,快速看到你每次修改,一個erp系統,常改的不常改的程式,就像M型社會,恰似兩個極端。

實作劇本如下:
用emacs 打開已受git 接管的目錄(假設是~/Iron_man_30_days)
裏的README .
輸入一行就存檔,就提交。共輸入4行。
提交4次。
This is 1st line . 存檔 提交(git commit -a -m 'README commit 1')
This is 2nd line . 存檔 提交(git commit -a -m 'README commit 2')
This is 3rd line . 存檔 提交(git commit -a -m 'README commit 3')
This is 4th line . 存檔 提交(git commit -a -m 'README commit 4')
git log 看修改記錄 ,順便了解,git用sha 編碼
commit ca13f0b79d7fe13fd99c6e6d9e61ee48727ac698
Author: timloo <timloo0710@gmail.com>
Date: Tue Oct 11 07:21:48 2011 -0700

README commit4

commit 6b2006528e74f720ef4adf43ddde0df1a2be2693
Author: timloo <timloo0710@gmail.com>
Date: Tue Oct 11 07:20:27 2011 -0700

README commit3
...............以下省略.......................................

git show HEAD README #看每次提交時的差異
commit ca13f0b79d7fe13fd99c6e6d9e61ee48727ac698
Author: timloo <timloo0710@gmail.com>
Date: Tue Oct 11 07:21:48 2011 -0700

README commit4

diff --git a/README b/README
index 518a436..dad287d 100644
--- a/README
+++ b/README
@@ -1,3 +1,4 @@
This is 1st line.
This is 2nd line.
-This is 3rd line.
\ No newline at end of file
+This is 3rd line.
+This is 4th line.
\ No newline at end of file

#表現的格式是用diff的型式

git show HEAD^^^ README #試試看會看到什麼差異

git revert HEAD #會回到上一版
git revert HEAD #又回來目前這一版,所以revert 由實作中了解其意義

時光機器的方式,應該要能隨心所欲的回到任一次提交的時間點。

目前測試的其中不算完全正確的方法。

git reset 794677b8ba02a6e7e12cb769e3553d9957d383b4 #(用sha 碼切換)

git checkout -f #這會回到第一次,且把第二,三,四次的提交記錄刪除
#以回到過去來講,把回到現在的路砍斷了

看網路朋友分享的文章,不少人 revert reset 不太容易分清楚,
其實revert reset 後面還可接參數,
能夠做到時空機器回到過去任何一個時點。
可參考http://blog.wu-boy.com/2010/08/git-%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6%EF%BC%9A%E5%88%A9%E7%94%A8-git-reset-%E6%81%A2%E5%BE%A9%E6%AA%94%E6%A1%88%E3%80%81%E6%9A%AB%E5%AD%98%E7%8B%80%E6%85%8B%E3%80%81commit-%E8%A8%8A%E6%81%AF/

http://www.slideshare.net簡報分享網上,有不少寫得很好的git入門手冊。但是較少用劇本(案例)的方式來演練,有時候,演一下,就懂了。

小結:
筆者認為,SCM(VC)是一個一頭栽下去,就沒完沒了的系統,愈鑽研就愈見奇妙,
這是其他系統比較少見的地方,一直叫自己適可而止,
卻忍不住的玩過頭,白天在公司時,已經在WINXP上安裝了msysgit/tortoisegit,
這是和檔案總管結合的git client. git 在本機端就是完整的VC.
不一定要和遠端(remote)去提交檔案,在個人用途上,有時候能自由自在的
回復到任意一個提交時間點,或是方便你看每一次檔案的差異,已經很符合獨善其身的目的,目前tortoisegit
的GUI算是做得非常親和,值得推薦給大家,當然電腦總是會掛機,若想真的高枕無憂,還是用git remote push到遠端主機才是正解。


上一篇
emacs 做中學第四天
下一篇
emacs 做中學第六天:來一個小小的web server ->Cheetah 1.8
系列文
emacs的30天學習筆記38

1 則留言

0
timloo
iT邦研究生 2 級 ‧ 2013-10-20 17:08:07

真的不好懂,

但一堆人加入,就有很多經驗可分享了!

我要留言

立即登入留言