git基礎——記錄每次更新到倉庫

weixin_33782386發表於2018-12-05

檔案生命週期中的狀態

  • 未跟蹤
  • 已跟蹤
    • 未修改
    • 已修改
    • 已暫存
6087677-d20bbafe9ee12b86.png
file-lifecycle-in-git.png

上圖中的Modified-->Staged這一狀態轉變,需要 git add 命令實現。
注意:
git add 是個多功能命令:可以用它開始跟蹤新檔案,或者把已跟蹤的檔案放到暫存區,還能用於合併時把有衝突的檔案標記為已解決狀態等。 將這個命令理解為“新增內容(新增或修改的)到下一次提交中”。(git book中的原話)
跟蹤新檔案:Untracked --> Staged
把已跟蹤的檔案放到暫存區:Modified --> Staged

注意項(摘自 git book 中文版):
如果對檔案CONTRIBUTING.md做了一次修改,然後執行了 git add 命令,然後又做了一次修改,這時候執行下git status 會看到如下情況

$ vim CONTRIBUTING.md
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   README
    modified:   CONTRIBUTING.md

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:   CONTRIBUTING.md

怎麼回事? 現在 CONTRIBUTING.md 檔案同時出現在暫存區和非暫存區。 這怎麼可能呢? 好吧,實際上 Git 只不過暫存了你執行 git add 命令時的版本, 如果你現在提交,CONTRIBUTING.md 的版本是你最後一次執行 git add 命令時的那個版本,而不是你執行 git commit 時,在工作目錄中的當前版本。 所以,執行了 git add 之後又作了修訂的檔案,需要重新執行 git add 把最新版本重新暫存起來。

提交時,忽略部分檔案

GitHub 有一個十分詳細的針對數十種專案及語言的 .gitignore 檔案列表,你可以在 https://github.com/github/gitignore 找到它.

檢視已暫存和未暫存的修改

檢視尚未暫存的檔案更新了哪些部分,不加引數直接輸入 git diff
此命令比較的是工作目錄中當前檔案和暫存區域快照之間的差異, 也就是修改之後還沒有暫存起來的變化內容。
若要檢視已暫存的將要新增到下次提交裡的內容,可以用 git diff --cached 命令。(Git 1.6.1 及更高版本還允許使用 git diff --staged,效果是相同的,但更好記些。)(也就是說 git diff --staged 是比較 暫存區裡的快照/版本 與 上一次提交的版本 之間的區別。)

提交

執行 git commit 會啟用預設的vim或者emacs編輯器,可以使用 git config --global core.editor 命令設定你喜歡的編輯軟體(路徑不能有空格)。
git commit 提交的是暫存區域的快照。每一次提交,都是對你專案作一次快照,以後可以回到這個狀態,或者進行比較。

跳過使用暫存區域(git book中的該標題不恰當)

給 git commit 加上 -a 選項,Git 就會自動把所有已經跟蹤過的檔案暫存起來一併提交,從而跳過 git add 步驟。(注意:是把 已跟蹤過的檔案 新增到暫存區,而未跟蹤的檔案還是需要通過 git add 命令加入暫存區)

移除檔案

手動將檔案刪除(在linux中的命令是rm),然後執行 git rm 命令,下一次提交時,該檔案就不再納入版本管理了(從工作區+暫存區 移除檔案)。
git rm [檔名]
注意,git rm 命令只能操作已跟蹤的檔案。

如果要刪除已修改的檔案(當然該檔案必須是已跟蹤的檔案),要使用 -f 引數強制刪除,即
git rm -f [檔名]

如果只想將某個檔案的暫存快照刪除,而在工作區裡保留這個檔案,要使用 --cached 選項,即
git rm --cached [檔名]

移動檔案

其實,執行 git mv 就相當於執行了下面三條命令:

$ mv README.md README
$ git rm README.md
$ git add README

本文摘自 git book 中文版 v2,其中部分內容為個人見解。
git book——2.2 Git 基礎 - 記錄每次更新到倉庫

相關文章