Git學習筆記:基礎篇

git能夠說是全部開發者出開發語言以外的最基本的基本功了,熟悉git能夠方便的進行代碼版本控制,以及與其餘開發者進行合做開發。本文內容是我以往學習git時作的筆記,主要是關於git最基本的操做,但 只要熟練掌握本篇內容,能夠說採用git進行開發基本沒有問題了。git

1. git init :要對現有的某個項目開始用 Git 管理,只需到此項目所在的目錄運行此命令。編程

2. git add + 文件名:將某個文件歸入到版本控制中。注:文件名能夠用通配符,另外也能夠用「git add all」或者「git add -a」來一次性將全部文件添加到版本控制中。服務器

3. git clone [url] :將遠程倉庫克隆到本地,其中url爲遠程倉庫連接地址。編輯器

4. git status :查看git倉庫中的文件出於哪種狀態。注:Untracked files是指未被git倉庫追蹤的文件;new file是指已被跟蹤,並處於暫存狀態的文件;modified指的是已跟蹤文件的內容發生了變化,但尚未放到暫存區。學習

5. 配置忽略文件:有些文件無需歸入 Git 的管理,也不但願它們總出如今未跟蹤文件列表,那麼能夠在git項目文件中新建一個名爲「.gitignore」的文件,在這個文件中配置須要忽略的文件。文件 .gitignore 的格式規範以下:fetch

  • 全部空行或者以註釋符號 # 開頭的行都會被 Git 忽略。
  • 可使用標準的 glob 模式匹配。
  • 匹配模式最後跟反斜槓(/)說明要忽略的是目錄。
  • 要忽略指定模式之外的文件或目錄,能夠在模式前加上驚歎號(!)取反。

例如:ui

# 此爲註釋 – 將被 Git 忽略 *.a # 忽略全部 .a 結尾的文件  !lib.a # 但 lib.a 除外 /TODO # 僅僅忽略項目根目錄下的 TODO 文件,不包括 subdir/TODO  build/ # 忽略 build/ 目錄下的全部文件  doc/*.txt # 會忽略 doc/notes.txt 但不包括 doc/server/arch.txt

6. git diff :查看還沒有暫存的文件更新了哪些部分。git diff –cached則是查看已經暫存起來的文件和上次提交時的快照之間的差別。url

7. git commit :提交更新。當git commit不加其餘參數時,會打開文本編輯器來輸入描述信息。也可使用git commit -m "描述信息"的方式直接在命令中添加描述信息。給 git commit 加上 -a 選項,Git 就會自動把全部已經跟蹤過的文件暫存起來一併提交,從而跳過 git add 步驟。spa

 

8. git rm + "文件名" : 從 Git 中移除某個文件(磁盤目錄中也會刪除),就必需要從已跟蹤文件清單中移除(確切地說,是從暫存區域移除),而後提交。若是隻是簡單地從工做目錄中手工刪除文件,git追蹤中仍會顯示。若是刪除以前修改過而且已經放到暫存區域的話,則必需要用強制刪除選項 -f強制移除。版本控制

9. git rm --cached + 「文件名」 :把文件從 Git 倉庫中刪除(亦即從暫存區域移除),但仍然但願保留在當前工做目錄中,以便稍後在 .gitignore 文件中補上,用 –cached 選項便可。運行這一命令以後,該文件會從新編程untraced的狀態。

10. git mv 「舊文件名" 」新文件名" : 重命名文件,或者說移動文件。

11. git log:查看提交歷史記錄。

git log -p -2 :-p參數是用來顯示每次提交的內容差別,-2表示僅顯示最近的兩次提交。

12. git commit --amend:撤銷提交操做。例如:首先建立一個1.txt文件,並保存到git。

touch 1.txt

git add 1.txt git commit -m "新建文件1.txt"

這時候發現,忘了還要新建一個2.txt文件,這時候後悔了,想要撤銷剛纔的提交,新建號兩個文件,一塊兒add 而後commit。能夠這麼作:

touch 2.txt

git add 2.txt git commit --amend -m "新建兩個文件1.txt和2.txt"

這以後,上一一次的commit就回做廢,使用git log查看記錄就回發現,提示信息以後"新建兩個文件1.txt和2.txt"這一個,而"新建文件1.txt"已經被覆蓋(刪除)了。

13. git reset HEAD 文件名:取消暫存(add)。當對多個文件同時add以後,發現某個文件不須要add,那麼就可使用這一命令。

14.git checkout -- 文件名 :撤銷以前的全部操做,恢復到最近的一次commit。注意,該命令必須是修改以後還未進行add之列的操做,不然就回不去了。該命令你一旦執行,所作修改都會消失,回到最近的commit。

15. git remote 查看遠程倉庫。該命令會列出全部的遠程倉庫,若是肯定配置有遠程倉庫,至少應該能看到 origin - 這是 Git 給你克隆的倉庫服務器的默認名字(注:origin是默認的遠程倉庫名稱,master是默認的分支)。進一步,還能夠指定參數-v:

git remote -v 指定選項 -v,會顯示須要讀寫遠程倉庫使用的 Git 保存的簡寫與其對應的 URL。

git remote show [remote-name] 顯示遠程倉庫的詳細信息(真的很詳細)。

16. git remote add <shortname> <url> 添加遠程服務器。能夠認爲shortname是給遠程倉庫取的一個別名,也就是說上面說的remote-name,下次使用這個遠程倉庫時,就不須要經過url,使用這個別名就行了。

17. git fetch [remote-name] [branch-name] 從遠程倉庫中拉取。這個命令會訪問遠程倉庫,從中拉取全部你尚未的數據。 執行完成後,你將會擁有那個遠程倉庫中全部分支的引用,能夠隨時合併或查看。 必須注意 git fetch 命令會將數據拉取到你的本地倉庫 - 它並不會自動合併或修改你當前的工做。 當準備好時你必須手動將其合併入你的工做。

18.git pull [remote-name] [branch-name] 從最初克隆的服務器上抓取數據並自動嘗試合併到當前所在的分支。

19. git push [remote-name] [branch-name] 將本地倉庫推送到遠程倉庫remote-name上的branch-name上。只有當你有所克隆服務器的寫入權限,而且以前沒有人推送過期,這條命令才能生效。 當你和其餘人在同一時間克隆,他們先推送到上游而後你再推送到上游,你的推送就會毫無疑問地被拒絕。 你必須先將他們的工做拉取下來並將其合併進你的工做後才能推送。

20. git remote rename old-name new-name 給遠程倉庫重命名

21. git remote rm + 倉庫名 移除遠程倉庫

相關文章
相關標籤/搜索