> 原文地址:http://gitref.org/zh/index.html
## GIT 學習手冊簡介
本站為 Git 學習參考手冊。目的是為學習與記憶 Git 使用中最重要、最普遍的命令提供快速翻閱。 這些命令以你可能需要的操作類型劃分,并且將提供日常使用中需要的一些常用的命令以及參數。
本手冊將從入門到精通指導大家。 首先,我們要從如何以 Git 的思維方式管理源代碼開始。
> 如何以 GIT 的方式思考(這節可以不用看懂,接著看下面的內容,看完就全懂了。)
懂得 Git,第一件重要的事情就是要知道它與 Subversion、Perforce 或者任何你用過的版本控制工具都有著很大的差別。 通常,忘掉你預想的版本控制方式,改以 Git 的方式思考,能夠幫助你更好地學習 Git。
讓我們從頭開始。假設你正在設計一個新的源代碼管理系統。在你使用某個工具之前,是如何完成基本的源碼版本控制工作的呢? 十有八九,你只是在項目到達某些階段的時候,對項目做一份拷貝。
~~~
$ cp -R project project.bak
~~~
這樣,你就可以在事情變得一團糟的時候很方便的返回到之前的狀態,或者通過對比當前的項目與之前的拷貝,看看自己在之后的工作中,都做了哪些修改。
如果你有點偏執,你可能會經常作上面說的事情,或許還會給項目拷貝加個日期:
~~~
$ cp -R project project.2010-06-01.bak
~~~
如此,你就有了一堆項目在各個階段的快照,來作比較、查看。使用這種模式,你還可以有效地與人分享項目變更。 如果你會在項目到達一定階段的時候給它打個包,丟到自己的網站上,那其他的開發者們,就能很方便地下載它,做點改動,并給你補丁回饋。
~~~
$ wget http://example.com/project.2010-06-01.zip
$ unzip project.2010-06-01.zip
$ cp -R project.2010-06-01 project-my-copy
$ cd project-my-copy
$ (做了某些修改)
$ diff project-my-copy project.2010-06-01 > change.patch
$ (通過E-mail發送修改補丁)
~~~
以此方式,原先的開發者就能將其他人的改動應用到他的項目中去,其他開發者也能了解你做的變更。其實這便是許多開源項目采用過多年的協作方式。
這辦法其實很好使,所以假設我們現在想要寫個工具,讓這個辦法更快、更簡單。 我們與其實現一個工具以記錄每個文件的版本,可能不如去實現個工具以使創建、儲存項目的快照更加方便,不用每次都去人肉作整個項目的拷貝。
這就是 Git 的精要所在。你通過?`git commit`告訴 Git 你想保存一份項目快照, Git 就會為你的項目中的各個文件的當前狀態存一份記錄。之后,絕大部分的 Git 命令都圍繞這些記錄展開。 比如查看它們的區別(diff),提取它們的內容,等等。

如果你將 Git 看作一個排序、對比以及合并項目更新的工具,那就容易理解狀況和正確做事了。