初探 git 版本控制系統

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/