Git入門
1、下載
下載地址:http://git-scm.com/downloads
從這里可以下載到多種操作系統的支持版本,目前有:Mac、Windows、Linux、Solaris。
2、安裝
在Linux 上安裝:
如果你想在 Linux 上用二進制安裝程序來安裝 Git,可以使用發行版包含的基礎軟件包管理工具來安裝。 如果以 Fedora 上為例,你可以使用 yum:
$ yum install git
在Windows上安裝:
Windows版本是一個exe文件,與其它軟件的安裝方式是一樣的。
3、初次使用Git前的配置
1)配置用戶、郵箱:
$ git config --global user.name "fjn" $ git config --global user.email fs1194361820.com
如果使用了 --global 選項,那么該命令只需要運行一次,因為之后無論你在該系統上做任何事情, Git 都會使用那些信息。 當你想針對特定項目使用不同的用戶名稱與郵件地址時,可以在那個項目目錄下運行沒有 --global 選項的命令來配置。
2)關聯文本編輯器:
$ git config --global core.editor emacs
下面是windows系統上關聯EditPlus的方法:
$ git config --global core.editor “\”D:\Program Files\EditPlus\x86\EditPlus.exe\””
4、查看help
$ git help <verb> $ git <verb> --help $ man git-<verb>
也可以直接通過瀏覽器進行查看,因為Git相關問題就在Git安裝目錄下:

5、將現在項目納入Git管理
如果你打算使用 Git 來對現有的項目進行管理,你只需要進入該項目目錄並輸入:
$ git init
使用這個命令會初始化一個Git倉庫,但你項目中的文件並沒有加入到倉庫中,所以需要做的就是將項目中的文件加入到倉庫中,方法如下:
$ git add *.c
$ git add LICENSE
或者可以直接使用:
$ git add *
最終使用:
$ git commit -m 'initial project version'
或許你用習慣了SVN等,add命令入SVN中的加入是類似的,但又是不同的,最后需要提交。-m 后是commit comment。
6、從遠程倉庫clone項目
如果你想獲得一份已經存在了的 Git 倉庫的拷貝,比如說,你想為某個開源項目貢獻自己的一份力,這時就要用到 git clone 命令。 如果你對其它的 VCS 系統(比如說Subversion)很熟悉,請留心一下你所使用的命令是"clone"而不是"checkout"。
$ git clone https://github.com/libgit2/libgit2
如果你想在克隆遠程倉庫的時候,自定義本地倉庫的名字,你可以使用如下命令:
$ git clone https://github.com/libgit2/libgit2 mylibgit
7、Git管理下的文件的狀態變化周期
請記住,你工作目錄下的每一個文件都不外乎這兩種狀態:已跟蹤或未跟蹤。 已跟蹤的文件是指那些被納入了版本控制的文件,在上一次快照中有它們的記錄,在工作一段時間后,它們的狀態可能處於未修改,已修改或已放入暫存區。 工作目錄中除已跟蹤文件以外的所有其它文件都屬於未跟蹤文件,它們既不存在於上次快照的記錄中,也沒有放入暫存區。 初次克隆某個倉庫的時候,工作目錄中的所有文件都屬於已跟蹤文件,並處於未修改狀態。
編輯過某些文件之后,由於自上次提交后你對它們做了修改,Git 將它們標記為已修改文件。 我們逐步將這些修改過的文件放入暫存區,然后提交所有暫存了的修改,如此反復。所以使用 Git 時文件的生命周期如下:

使用 git status 可以查看文件的狀態,例如:

8、常用命令
1)將文件納入跟蹤: git add filename
2)將文件移除跟蹤: git rm filename
3)要在 Git 中對文件改名,可以這么做:git mv,例如:
$ git mv README.md README
4)git log 查看提交日志
5)恢復指定文件:git checkout
最后將文件提交就行了,使用git commit。
如果想要直接提交文件,而不使用git add,可以:git commit –a –m ‘ commit message’。如果在提交時不指定comment,就會啟動你指定的默認的文件編輯器,讓你輸入comments。
題外話:
編輯文件:直接在git bash中使用vim file,例如:

效果:

如果想在windows系統下也能夠使用vim工具,可以使用gvim。
而在windows上可以使用這些命令的緣由是在git/bin目錄下,有大量的相關的exe存在:

9、使用遠程倉庫
在前面第6小節中,已經說明了如何從遠程倉庫clone一個已存在的項目。這里就再說一些遠程操作相關的其他內容:
1) 關聯遠程倉庫
將遠程倉庫關聯,就可以在本地倉庫與遠程倉庫之前進行文件推送與拉取了。
git remote add name url
$ git remote add shortName https://github.com/userid/reposName
2)從遠程倉庫pull、fetch:
使用git pull,會將遠程倉庫中的指定分支到本地倉庫的一個分支中,並將兩者合並。
使用git fetch,會從遠程倉庫中抓取你沒有的數據,但不會合並,必須手動合並。
3)push推送到遠程倉庫
使用git push reposName branchName,將倉庫reposName中的branchName推送文件到遠程倉庫。
例如,要將本地修改好的代碼同步到遠程倉庫中。就需要如下操作:
a)使用{git add filename}, {git add --update filename}將添加(或者修改) 的文件在本地倉庫上建立索引。
b)使用{git commit -m your_commit_message} 將對代碼的修改提交到本地倉庫上。
c)使用{git push remoteReposName branchName} 將本地倉庫上的代碼推送到遠程倉庫。
例如下面就是將本地倉庫的代碼同步到遠程倉庫上,只不過這個遠程倉庫是在GitHub上的.

4)遠程倉庫重命名:
git remote rename oldName newName
其實是遠程倉庫在Git程序中的一個配置,並不會真正的改變遠程倉庫的名稱,只是為了讓你在使用時能夠進行區分。
5)遠程倉庫移除:
git remote rm name
同樣並不會真正的刪除遠程倉庫,而是你在使用git時,不能再對遠程倉庫進行操作了。
6)切換到遠程分支:
git checkout -b {localBranchName} {origin}/{remoteBranchName}
代表切換到遠程分支 origin/remoteBranchName, 並在本地創建分支 localBranchName
例如:
我先clone kafka trunk :
git clone https://github.com/apache/kafka.git .
然后查看當前分支: git status
最后切到0.10.0分支:git checkout -b 0.10.0 origin/0.10.0

