git基礎——記錄每次更新到倉庫
檔案生命週期中的狀態
- 未跟蹤
- 已跟蹤
- 未修改
- 已修改
- 已暫存
上圖中的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 基礎 - 記錄每次更新到倉庫
相關文章
- Git 系列教程(5)- 記錄每次更新到倉庫Git
- 記錄每次更新到倉庫 —— Git 學習筆記 10Git筆記
- Git(6)-- 記錄每次更新到倉庫(git clone、status、add、diff、commit、rm、mv命令詳解)GitMIT
- [我是傻X] 記錄一次 Git 更換倉庫更換金鑰Git
- Git 倉庫程式碼遷移步驟記錄Git
- git-清空歷史提交記錄(保留原倉庫)Git
- git下載倉庫指定目錄Git
- Git新手教程-檢視倉庫的歷史記錄(四)Git
- 取得 Git 倉庫 —— Git 學習筆記 04Git筆記
- Git倉庫的提交記錄亂成一團,怎麼辦?Git
- Git 倉庫Git
- git倉庫修改遠端倉庫Git
- Git 遊戲攻略(上篇)- 基礎&高階&整理提交記錄Git遊戲
- 『現學現忘』Git基礎 — 24、Git中檢視歷史版本記錄Git
- Docker基礎-搭建本地私有倉庫Docker
- git 遠端倉庫Git
- git換倉庫命令Git
- 基於 git 打造簡易的 npm 私有倉庫GitNPM
- git 修改本地倉庫的遠端倉庫地址Git
- Rocky Linux搗鼓記錄(三):安裝epel軟體倉庫、更換國內源Linux
- Git倉庫大掃除Git
- Git 倉庫大掃除Git
- git 刪除本地倉庫Git
- git倉庫完整遷移Git
- Git 使用遠端倉庫Git
- docker搭建私人git倉庫DockerGit
- Git本地倉庫基本操作Git
- git-遠端倉庫Git
- git初始化--本地建立git倉庫Git
- Git使用系列03-->Git倉庫建立Git
- git操作之四:git branch(本地倉庫)Git
- 本地倉庫推送到遠端倉庫的git操作Git
- 最簡單地將GitHub專案更新到本地倉庫Github
- Git記錄Git
- git 記錄Git
- Git的修改提交記錄和變基Git
- 手把手教你配置git和git倉庫Git
- Git專案匯入其他的git倉庫Git