Git新手教程-向倉庫中添加commit(五)

前言

在該篇文章中,咱們終於要來學習如何建立本身的提交(commit),在前面的文章中,咱們已經學會使用 git init 命令來建立新倉庫,使用 git clone 命令來複制現有倉庫,使用 git log 命令來查看現有的提交。以及使用很是重要的 git status 命令來查看倉庫的狀態。本篇文章會在這些知識的基礎上添加 git addgit commitgit diff 。 在具體講解這三個命令以前,咱們先簡單的看看這三個命令的做用。html

  • git add 可讓你將文件從工做目錄添加到暫存區。
  • git commit 可讓你將文件從暫存區中取出。並保存在倉庫區中,也就是你實際將要提交的地方。
  • git diff 能夠顯示文件兩個版本之間的差別,它的輸出與上篇文章中使用的 git log -p 命令的輸出徹底同樣。

git add 命令的使用

在使用 git add 命令以前,咱們先回顧一下倉庫的建立過程。咱們如今本身的喜歡的目錄下建立倉庫,在下圖中個人倉庫的地址爲documents/GitTest/GitTestProject。在接下來的文章中,都會以該倉庫做爲例子進行講解。linux

首先咱們先進入該目錄,並經過 git init建立Git倉庫:git

git的init命令使用.jpg

在沒有向倉庫提交任何commit時,屢次運行git init命令是沒有關係的,git init命令只會屢次從新初始化倉庫算法

檢查倉庫狀態!別忘了

咱們必定要在運行Git相關命令後,必定要使用 git status 命令來檢查當前倉庫的狀態。由於咱們不能保證,咱們是否遺忘了某些東西。若是你像我同樣使用了 git status命令,那麼你能獲得下列輸出結果:vim

On branch master

No commits yet

nothing to commit (create/copy files and use "git add" to track)
複製代碼

開始添加文件

當咱們使用 git status 檢查了倉庫確實沒有任何文件後,那接下來咱們來建立一些文件。這裏我分別建立了三個文件,Git總目錄.mdGit練習.mdJVM系列之總目錄.md,這個時候咱們再使用 git status 來查看咱們倉庫的狀態,咱們能獲得下列結果:bash

On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)

  Git總目錄.md
  Git練習.md
  JVM系列之總目錄.md

nothing added to commit but untracked files present (use "git add" to track)
複製代碼

要將文件提交到暫存區,咱們須要使用 git add 命令,這裏咱們將Git總目錄.md文件添加到暫存區中,使用命令 git add Git總目錄.md,咱們再使用 git status 查看咱們的倉庫狀態,咱們能獲得下列結果:app

還記得暫存區嗎?暫存區是Git目錄下的一個文件,存儲的是即將進入下個 commit 內容的信息。能夠將暫存區看作準備工做臺,Git 將在此區域獲取下個 commit。編輯器

On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

  new file:   Git總目錄.md

Untracked files:
  (use "git add <file>..." to include in what will be committed)

  Git練習.md
  JVM系列之總目錄.md
複製代碼

這個時候,在命令行中的 Untracked files 下,就只有Git練習.mdJVM系列之總目錄.md了,ide

細心的小夥伴確定看到(use "git rm --cached <file>..." to unstage),該命令能夠幫助咱們將你 git add 錯誤提交的文件,從暫存區中移除,此外,在命令行輸出中出現了"unstage"(撤消暫存)字眼。將文件從工做目錄移到暫存區叫作"staging"(暫存)。若是已移動文件,則叫作"staged"(已暫存)。從暫存區將文件移回工做目錄將"unstage"(撤消暫存)。工具

使用git add 添加剩餘的文件

當咱們已經將 Git總目錄.md 添加到暫存區中後,咱們可能還想將剩下的兩個文件 Git練習.mdJVM系列之總目錄.md 也添加到暫存區中。固然咱們能夠一個一個的使用使用 git add 命令添加剩餘的文件,咱們也能夠這樣:

git add Git練習.md JVM系列之總目錄.md
複製代碼

使用git add <file1> <file2> … <fileN>這種方式,咱們能夠添加多個文件,其中<file>表明一個或多個文件。

除了使用上述方法之外,咱們還可使用一個特殊的命令行字符 .(點).(點) 表明當前目錄,能夠用來表示全部文件和物理(注意!注意!注意!包括全部嵌套文件和目錄)。

git add Git練習.md JVM系列之總目錄.md
#等於
git add .
複製代碼

若是你使用 .(點) 添加了多餘的文件,那麼咱們可使用git rm --cached <file1> <file2> … <fileN>命令,將多餘的文件從暫存區中移除。

git commit 命令的使用

當咱們將上文提到的三個文件都添加到暫存區以後,如今須要將暫存區中的內容提交到倉庫中去,也就是使用 git commit 命令,固然在運行該命令以前,咱們要時刻使用 git status 命令查看當前倉庫的狀態。使用 git stasus 查看狀態:

On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

 new file:   Git總目錄.md
 new file:   Git練習.md
 new file:   JVM系列之總目錄.md
複製代碼

嗯,美滋滋,全部的文件都在暫存區中了,那如今開始咱們的提交吧。在具體提交以前,咱們須要注意,若是你在下載 Git後沒有設置文本編輯器,那麼 Git 會默認會調用系統的默認編輯器,通常狀況是 Vi 或者 Vim 。固然咱們也能夠配置咱們本身喜歡的文本編輯器。這裏我配置的是 Sublime Text ,配置命令以下所示:

git config --global core.editor "'/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl' -n -w"
複製代碼

若是你像我同樣配置了Sublime Text,那麼咱們會獲得下圖:

Git_Commit文本編輯.jpg

第一行中,就是咱們須要輸入這次commit的信息,由於這是咱們的第一次提交,因此這裏我填的是 Initial commit ,固然你能夠根據你的喜愛填寫信息。其餘被#標記的行都是註釋信息,都會被忽略。當咱們使用 git commit 命令後,咱們在控制檯會獲得以下輸出:

[master (root-commit) 18522c6] Initial commit
 3 files changed, 45 insertions(+)
 create mode 100644 Git總目錄.md
 create mode 100644 Git練習.md
 create mode 100644 JVM系列之總目錄.md
複製代碼

若是你配置了Git文本編輯器,那麼會在你輸入內容,退出編輯器後,會自動提交commit。

這個時候咱們再使用 git status 查看咱們的倉庫狀態,輸出結果爲:

On branch master
nothing to commit, working tree clean
複製代碼

上述代表,全部暫存區中的文件,都提交到Git的倉庫區中了。如今咱們就將第一個commit提交到倉庫中去了。固然有可能你提交的描述信息很簡短,那麼你可使用-m選項來跳過編輯器。以下所示:

git commit -m "initial commit"
複製代碼

固然經過 -m 選項提交的消息只包含標題的,不會包含正文,若是你想怎麼知道怎麼寫一個閱讀性良好的commit message,那麼你有可能閱讀下面這兩篇文章;

進行第二次commit

如今咱們已經進行咱們的第一次commit了,那麼如今咱們修改Jxm系列之總目錄.md文件,打開該文件,將文件中的語句- Java類加載器(雙親委派模型)刪掉,並保存。以下操做:

- Java內存結構及分區
- Java對象的建立、存儲及訪問
- Java判斷對象是否存活
- 垃圾回收算法(GC)
- Jvm中的常見的垃圾回收器
- Java類加載過程
- Java類加載器(雙親委派模型)#---> 刪除這行
複製代碼

接着咱們使用git status查看當前咱們的倉庫狀態:

On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

 modified:   Jvm系列之總目錄.md

no changes added to commit (use "git add" and/or "git commit -a")
複製代碼

從控制檯中,咱們能夠看到咱們的文件Jvm系列之總目錄.md已經被標記爲modifed了,那如今咱們如何將修改的文件提交到Git的倉庫區中呢?要將內容提交到Git的倉庫區中去,咱們須要將文件提交到暫存區中,在以前的命令中將文件提交到暫存區中,咱們須要使用命令 git add 命令,固然 git add 命令不只只針對新建的文件,它仍能夠將修改後的文件提交到暫存區中。也就是咱們只要使用 git addgit commit 命令,咱們就能將修改後的文件提交到Git的倉庫中去了。

簡單總結

在學習了git addgit commit 命令後,咱們簡單的總結一下這兩個命令。

  • git add 能夠不只能夠向暫存區中添加新的文件,一樣也能將修改的文件進行暫存。
  • git commit 會取出暫存區的文件,並保存到倉庫中。該命令須要輸入commit消息。

git diff

還有最後一個命令 git diff 。這個命令能夠幫助咱們查看咱們一些沒有提交的更改,也就是說咱們能夠看到當前修改的文件與Git倉庫之間的差別。仍是Jvm系列之總目錄.md文件爲例,這裏咱們繼續刪除- Java類加載過程,以下圖所示:

- Java內存結構及分區
- Java對象的建立、存儲及訪問
- Java判斷對象是否存活
- 垃圾回收算法(GC)
- Jvm中的常見的垃圾回收器
- Java類加載過程 #---> 刪除這行
複製代碼

而後咱們使用 git diff命令查看命令行輸出:

git_diff展現.jpg

在上圖中,紅色表示當前修改的文件刪除的行。我相信你們看到這個界面必定會很熟悉,還記的咱們以前介紹長褲倉庫的歷史提交記錄中,所將的git log -p嗎?其實git log -p其實就是使用了git diff命令。關於上圖中,若是你們不理解每行所表明的意思,那麼能夠查看《查看倉庫的歷史記錄(四)》中git log -p中的介紹。

IntelliJ IDEA or Android Sutdio 圖形化界面的使用

又到了咱們熟悉的偷懶環節了。如今咱們來看看一下 git addgit commitgit diff 在idea中的使用,

git add

若是你的項目已經經過Git管理,那麼當你在IDEA中建立新的文件夾時,編譯器會以下提示:

ide_add操做展現.jpg

經過提示消息,咱們其實就能看出,就是提示咱們是否將當前新建立的文件添加到Git的暫存區中,若是你選擇肯定,那麼就會將該文件添加到暫存區中。若是你不當心選擇了cancel,不用擔憂,你仍然可使用下列方式來添加文件到暫存區中。經過選擇你要添加的文件,點擊鼠標右鍵依次選擇Git--->add。就能夠將該文件添加到暫存區中。以下圖所示:

git_add_延遲展現.jpg

小提示:在ide是以一種很是直觀的顏色來表示當前倉庫中的文件狀態:

  1. 紅色:表示當前文件或目錄沒有被跟蹤。
  2. 綠色:表示當前文件或目錄已經被添加到倉庫中了。
  3. 藍色:表示被添加到倉庫中的文件或目錄被修改或移動。
  4. 橙色:表示被忽略的文件。
  5. 白色:表示沒有任何更改。

git commit 使用

當咱們將文件添加到暫存區中後,咱們能夠經過ide頂部的工具欄進行commit操做,記住是頂部喲!具體以下圖所示:

git_commit_展現.jpg

注意:若是你是修改已經跟蹤過的文件,那麼咱們不須要將修改的文件經過 git add 命令將其添加到暫存區中,注意!!!!當咱們直接使用 IDE 中的 commit 按鈕時,默認是執行 git addgit commit 這兩個命令的。

git diff 使用

一樣的 git diff 也在頂部,以下圖所示:

git_diff_ide.jpg

Git使用快捷鍵

固然除了上述全部的操做,咱們還可使用ide提供的快捷鍵進行操做,使用 Alt+ ` (Windows)option + ` (Mac) 的方式,能夠獲得如下界面:

idea_快捷鍵彙總.jpg

  1. 對應咱們使用的 git commit
  2. 對應咱們使用的 git diff
  3. 對應咱們使用的 git add

最後

站在巨人的肩膀上,才能看的更遠~

相關文章
相關標籤/搜索