git 跟 CVS 和 SVN 一樣,可以是有中央儲存庫(repository)的主從架構(ex: 連線至 github).
git 也可以是分散式的版本控制,每個人都是自己的儲存庫. 這代表每個人對於同一個專案,都可以有一個自己版本.
在分散式的架構下,本機就是儲存庫. 這代表就算沒有中央儲存庫, Git 也可以直接在本地端使用. 坐火車|坐飛機時 commit 到本地端儲存庫,等到有網路時再 push 到中央儲存庫即可.
git 不會像 CVS 和 SVN 一樣,每個資料夾下都會產生額外的資料夾.
git 觀察檔案內容而非檔案名稱. 在不同版本間,只要檔案內容一樣就只會有一個實體. 如此能節省空間及提升效率.
延伸閱讀:
8 則回應:
安裝了JGit:
先安裝Eclipse(IDE)
在安裝msysgit(Git for Windows)
最後安裝JGit(Eclipse Plug-in)
問題:
JGit在samba下會發生Committing failed
caused by: org.eclipse.jgit.errors.objectwritingexception: unable to create new object:
解法:
在samba config下加上
; Trying to fix EGit problem..
; Prevent blocking
hide dot files = no
create mask =0770
directory mask = 0770
blocking locks = no
locking = no
; ole locking compatibility = no
oplocks = no
share modes = no
posix locking = no
csc policy = disable
unix extensions = no
delete readonly = yes
force create mode =770
force directory mode = 770
Why Git is Better than X
http://zh-tw.whygitisbetterthanx.com/#
Git Refernce
http://gitref.org/basic/
working directory <-> stage <-> git
git diff
unstaged changes
working directory <-> stage
git diff --cached
staged changes
stage <-> git
git diff HEAD
all staged or unstaged changes
working directory <-> git
SVN Style的commit方式:
一次同時上stage並且commit.
# -m : commit message.
# -a : automatically stage all tracked, modified files before the commit.
git commit -am 'changes to hello file'
想法:
上stage再commit讓PG能夠更精確地決定每次要commit哪些部分.
git reset HEAD -- file
拿掉已經上stage的部分.
git rm file
拿掉已經上stage的部分.
並且從working directory刪除.
Simple daily git workflow
http://nakedstartup.com/2010/04/simple-daily-git-workflow/