Git命令的簡單使用

一.初始化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 分支上重演一遍”。 這理解起來有一點復雜,不過效果非常酷。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 以下內容是我在學習和研究Git時,對Git操作的特性、重點和注意事項的提取、精練和總結,可以做為Git操作的字典,...
    科研者閱讀 4,243評論 4 50
  • 以下內容是我在學習和研究Git時,對Git操作的特性、重點和注意事項的提取、精練和總結,可以做為Git操作的字典,...
    科研者閱讀 3,567評論 2 19
  • 早睡是為了身體,早起是為了我們的內心。 今天在哪思考:嫩江尼爾基水利水電有限責任公司發電廠中控室 天氣 就寢: 起...
    沙漠中的魚在飛閱讀 281評論 2 2
  • 文//南卿言 心智成熟的旅程不但是一項既復雜又艱巨的任務,而且是畢生的任務。 自律是解決人生問題最主要的工具,也是...
    南卿Nann閱讀 1,362評論 4 8
  • 三十歲以前,她們是再用身體換錢。 三十歲以后,我卻不知道用什么換他們的身體。 未來和意外,永遠不知道哪個先來。 生...
    渺小小的人兒閱讀 414評論 0 0