文件生命周期中的狀態(tài)
- 未跟蹤
- 已跟蹤
- 未修改
- 已修改
- 已暫存
上圖中的Modified-->Staged這一狀態(tài)轉變搞挣,需要 git add 命令實現(xiàn)。
注意:
git add 是個多功能命令:可以用它開始跟蹤新文件陵刹,或者把已跟蹤的文件放到暫存區(qū),還能用于合并時把有沖突的文件標記為已解決狀態(tài)等。 將這個命令理解為“添加內容(新增或修改的)到下一次提交中”吉殃。(git book中的原話)
跟蹤新文件:Untracked --> Staged
把已跟蹤的文件放到暫存區(qū):Modified --> Staged
注意項(摘自 git book 中文版):
如果對文件CONTRIBUTING.md做了一次修改,然后執(zhí)行了 git add 命令楷怒,然后又做了一次修改蛋勺,這時候執(zhí)行下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
怎么回事? 現(xiàn)在 CONTRIBUTING.md 文件同時出現(xiàn)在暫存區(qū)和非暫存區(qū)鸠删。 這怎么可能呢抱完? 好吧,實際上 Git 只不過暫存了你運行 git add 命令時的版本刃泡, 如果你現(xiàn)在提交巧娱,CONTRIBUTING.md 的版本是你最后一次運行 git add 命令時的那個版本,而不是你運行 git commit 時捅僵,在工作目錄中的當前版本家卖。 所以,運行了 git add 之后又作了修訂的文件庙楚,需要重新運行 git add 把最新版本重新暫存起來上荡。
提交時,忽略部分文件
GitHub 有一個十分詳細的針對數(shù)十種項目及語言的 .gitignore
文件列表馒闷,你可以在 https://github.com/github/gitignore 找到它.
查看已暫存和未暫存的修改
查看尚未暫存的文件更新了哪些部分酪捡,不加參數(shù)直接輸入 git diff
此命令比較的是工作目錄中當前文件和暫存區(qū)域快照之間的差異, 也就是修改之后還沒有暫存起來的變化內容纳账。
若要查看已暫存的將要添加到下次提交里的內容逛薇,可以用 git diff --cached 命令。(Git 1.6.1 及更高版本還允許使用 git diff --staged疏虫,效果是相同的永罚,但更好記些。)(也就是說 git diff --staged 是比較 暫存區(qū)里的快照/版本 與 上一次提交的版本 之間的區(qū)別卧秘。)
提交
執(zhí)行 git commit 會啟用默認的vim或者emacs編輯器呢袱,可以使用 git config --global core.editor 命令設定你喜歡的編輯軟件(路徑不能有空格)。
git commit 提交的是暫存區(qū)域的快照翅敌。每一次提交羞福,都是對你項目作一次快照,以后可以回到這個狀態(tài)蚯涮,或者進行比較治专。
跳過使用暫存區(qū)域(git book中的該標題不恰當)
給 git commit 加上 -a 選項卖陵,Git 就會自動把所有已經(jīng)跟蹤過的文件暫存起來一并提交,從而跳過 git add 步驟张峰。(注意:是把 已跟蹤過的文件 添加到暫存區(qū)泪蔫,而未跟蹤的文件還是需要通過 git add 命令加入暫存區(qū))
移除文件
手動將文件刪除(在linux中的命令是rm),然后執(zhí)行 git rm 命令挟炬,下一次提交時鸥滨,該文件就不再納入版本管理了(從工作區(qū)+暫存區(qū) 移除文件)。
git rm [文件名]
注意谤祖,git rm 命令只能操作已跟蹤的文件婿滓。
如果要刪除已修改的文件(當然該文件必須是已跟蹤的文件),要使用 -f 參數(shù)強制刪除粥喜,即
git rm -f [文件名]
如果只想將某個文件的暫存快照刪除凸主,而在工作區(qū)里保留這個文件,要使用 --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 基礎 - 記錄每次更新到倉庫