一.初始化git倉庫如果你打算使用 Git 來對現有的項目進行管理,你只需要進入該項目目錄并依次輸入:
$ git init
$ git add LICENSE
$ git commit -m 'initial project version'
現在,你已經得到了一個實際維護(或者說是跟蹤)著若干個文件的 Git 倉庫。
二.添加遠程倉庫
1.運行 git remote add添加一個新的遠程 Git 倉庫。
例如:$ git remote add pb https://github.com/paulboone/ticgit
2.推送到遠程倉庫
當你想分享你的項目時,必須將其推送到上游。 這個命令很簡單:
git push [remote-name] [branch-name]。
例:當你想要將 master 分支推送到 origin 服務器時 $ git push origin master
3.從遠程倉庫中抓取與拉取
從遠程倉庫中獲得數據,可以執行:$ git fetch [remote-name]
三.要查看哪些文件處于什么狀態,可以用 git status 命令。
狀態簡覽
git status 命令的輸出十分詳細,但其用語有些繁瑣。 如果你使用 git status -s 命令或 git status --short 命令,你將得到一種更為緊湊的格式輸出。
四.跟蹤新文件
使用命令 git add 開始跟蹤一個文件。 所以,要跟蹤 README 文件,運行:
$ git add README
五.忽略文件
一般我們總會有些文件無需納入 Git 的管理,也不希望它們總出現在未跟蹤文件列表。 在這種情況下,我們可以創建一個名為 .gitignore 的文件,列出要忽略的文件模式。
文件 .gitignore 的格式規范如下:
所有空行或者以 # 開頭的行都會被 Git 忽略。
可以使用標準的 glob 模式匹配。
匹配模式可以以(/)開頭防止遞歸。
匹配模式可以以(/)結尾指定目錄。
要忽略指定模式以外的文件或目錄,可以在模式前加上驚嘆號(!)取反。
所謂的 glob 模式是指 shell 所使用的簡化了的正則表達式。 星號(*)匹配零個或多個任意字符;[abc] 匹配任何一個列在方括號中的字符(這個例子要么匹配一個 a,要么匹配一個 b,要么匹配一個 c);問號(?)只匹配一個任意字符;如果在方括號中使用短劃線分隔兩個字符,表示所有在這兩個字符范圍內的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的數字)。 使用兩個星號(*) 表示匹配任意中間目錄,比如a/**/z 可以匹配 a/z, a/b/z 或 a/b/c/z等。
六.提交更新
現在的暫存區域已經準備妥當可以提交了。 在此之前,請一定要確認還有什么修改過的或新建的文件還沒有 git add 過,否則提交的時候不會記錄這些還沒暫存起來的變化。 這些修改過的文件只保留在本地磁盤。 所以,每次準備提交前,先用 git status 看下,是不是都已暫存起來了, 然后再運行提交命令 git commit。
七.分支
1.簡介
當使用 git commit 進行提交操作時,Git 會先計算每一個子目錄(本例中只有項目根目錄)的校驗和,然后在 Git 倉庫中這些校驗和保存為樹對象。 隨后,Git 便會創建一個提交對象,它除了包含上面提到的那些信息外,還包含指向這個樹對象(項目根目錄)的指針。如此一來,Git 就可以在需要的時候重現此次保存的快照。
現在,Git 倉庫中有五個對象:三個 blob 對象(保存著文件快照)、一個樹對象(記錄著目錄結構和 blob 對象索引)以及一個提交對象(包含著指向前述樹對象的指針和所有提交信息)。
Git 的分支,其實本質上僅僅是指向提交對象的可變指針。 Git 的默認分支名字是 master。 在多次提交操作之后,你其實已經有一個指向最后那個提交對象的 master 分支。 它會在每次的提交操作中自動向前移動。
Git 的分支,其實本質上僅僅是指向提交對象的可變指針。 Git 的默認分支名字是 master。 在多次提交操作之后,你其實已經有一個指向最后那個提交對象的 master 分支。 它會在每次的提交操作中自動向前移動。
由于 Git 的分支實質上僅是包含所指對象校驗和(長度為 40 的 SHA-1 值字符串)的文件,所以它的創建和銷毀都異常高效。 創建一個新分支就像是往一個文件中寫入 41 個字節(40 個字符和 1 個換行符),如此的簡單能不快嗎?
2.分支創建
Git 創建新分支只是為你創建了一個可以移動的新的指針。 比如,創建一個 testing 分支, 你需要使用 git branch 命令:
$ git branch testing
當你已經不再需要某個分支,你可以使用帶 -d 選項的 git branch 命令來刪除分支:
3.分支切換
要切換到一個已存在的分支,你需要使用 git checkout 命令。 我們現在切換到新創建的 testing 分支去:
$ git checkout testing
這樣 HEAD 就指向 testing 分支了。
4.分支創建和切換
想要新建一個分支并同時切換到那個分支上,你可以運行一個帶有 -b 參數的 git checkout 命令:
$ git checkout -b iss53
5.分支的合并
你只需要檢出到你想合并入的分支,然后運行 git merge 命令:
$ git checkout master
$ git merge iss53
6.刪除遠程分支
假設你已經通過遠程分支做完所有的工作了。 可以運行帶有 --delete 選項的 git push 命令來刪除一個遠程分支。 如果想要從服務器上刪除 serverfix 分支,運行下面的命令:
$ git push origin --delete serverfix
八.變基
變基操作的實質是丟棄一些現有的提交,然后相應地新建一些內容一樣但實際上不同的提交。
變基和合并分支,這兩種整合方法的最終結果沒有任何區別,但是變基使得提交歷史更加整潔。 你在查看一個經過變基的分支的歷史記錄時會發現,盡管實際的開發工作是并行的,但它們看上去就像是先后串行的一樣,提交歷史是一條直線沒有分叉。
例:$ git rebase --onto master server client
以上命令的意思是:“取出 client 分支,找出處于 client 分支和 server 分支的共同祖先之后的修改,然后把它們在 master 分支上重演一遍”。 這理解起來有一點復雜,不過效果非常酷。