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

前言

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

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

git add 命令的使用

在使用 git add 命令之前,我們先回顧一下倉庫的創建過程。我們現在自己的喜歡的目錄下創建倉庫,在下圖中我的倉庫的地址爲documents/GitTest/GitTestProject。在接下來的文章中,都會以該倉庫作爲例子進行講解。

首先我們先進入該目錄,並通過 git init創建Git倉庫:

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

檢查倉庫狀態!別忘了

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

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 來查看我們倉庫的狀態,我們能得到下列結果:

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 查看我們的倉庫狀態,我們能得到下列結果:

還記得暫存區嗎?暫存區是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了,

細心的小夥伴肯定看到(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 ,配置命令如下所示:

VS Code 配置-->VS Code as Git editor

Sublime Text-->OS X Command Line

如果你對默認的編輯器(Vi或者Vim)感興趣,你有可能需要這篇文章 Linux vi/vim

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

如果你像我一樣配置了Sublime Text,那麼我們會得到下圖:

第一行中,就是我們需要輸入此次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"

進行第二次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 log -p嗎?其實git log -p其實就是使用了git diff命令。關於上圖中,如果大家不理解每行所代表的意思,那麼可以查看《查看倉庫的歷史記錄(四)》中git log -p中的介紹。

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

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

git add

如果你的項目已經通過Git管理,那麼當你在IDEA中創建新的文件夾時,編譯器會如下提示:

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

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

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

git commit 使用

當我們將文件添加到暫存區中後,我們可以通過ide頂部的工具欄進行commit操作,記住是頂部喲!具體如下圖所示:

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

git diff 使用

同樣的 git diff 也在頂部,如下圖所示:

Git使用快捷鍵

當然除了上述所有的操作,我們還可以使用ide提供的快捷鍵進行操作,使用 Alt+ ` (Windows)option + ` (Mac) 的方式,可以得到以下界面:

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

最後

如果你看到了這裏,覺得文章寫得不錯就給個讚唄!歡迎大家評論討論!如果你覺得那裏值得改進的,請給我留言。一定會認真查詢,修正不足,定期免費分享技術乾貨。喜歡的小夥伴可以關注一下哦。謝謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章