Sunday, February 7, 2010

GIT 史上最簡單不求甚解的超級傻瓜教程

expected reader: 會用CLI(命令行),知道什么是version control,希望做到version control,有心機學version control并在項目里使用version control的人。
why git: 
0. git是分散式的, cvs/svn是集中式的, 現在流行的還有mercury, bazaar等。
1. git 是 Linus大牛搞的
2. git 有不少免費的repo,如github等。
3. git 的速度是最快的,從算法到設計實現都很好。

-- 開始 --
假設你的project裝在project這個目錄里:

首先,初始化:
git init
必做的一步。

然后,把要跟蹤的文件加進去,這里加入整個目錄
git add .
scenario: 當你新寫了幾個文件,想讓git"知道"他們的存在時,使用add。

提交更改:
git commit -a
然后會要求你輸入一些這次提交的內容。
scenario: 當你完成了某些階段性的工作,想保存更改時使用。

不同的branch代表不同的開發流程,由于默認有一個master branch,當我們想搞一些新東東,可以新開一個branch
git checkout -b mybrch
scenario: 當你想測試新的idea時使用

然后在不同branch之間切換
git checkout master/mybrch/...
scenario: 在不同idea之間切換時使用

查看更改:
git status
scenario: 查看你當前到上一次提交之間做了些蝦米。

一個新手要用到的,就這么多,不用了解原理死記都能記住~
具體要做到什么功能,就到時再查即可。

-- 使用repo(倉庫) --
利用公共的repo,如github
加入新的repo:
git repo add ...
scenario: 設定一個repo

推送你的更改到server
git push branch_name
scenario: 你想把你的更改放到server上,以便讓他人看到并下載。

下載
git pull branch_name # 這是下載并merge
git fetch branch_name # 這是下載但不merge,可以先對比再決定merge與否。
scenario: 當你想下載別人的代碼、把工作合并時使用。

就這么簡單。

2 comments:

Meng said...

说实话,除了研究linux kernel source之外我唯一知道使用git的project只有gnuwin32 Coreutils和decuda.

Meng said...

还有libx264。看来我受svn系影响严重了。