以前的文章咱們學習了git本地操做相關的命令:git init、git status、git add <file>、git commit (-m <describtion>)、git diff、git log,具體能夠經過連接查看GIt本地相關操做(一),接下來咱們繼續學習git本地操做相關的命令。git
一.基於本地倉庫進行修改segmentfault
git管理修改
咱們來進行以下圖展現的操做:
首先咱們進入/opt/studygit目錄下,對introduce.txt文件進行修改,具體命令緩存
root@quietor-virtual-machine:~# cd /opt/studygit/ root@quietor-virtual-machine:/opt/studygit# pwd /opt/studygit root@quietor-virtual-machine:/opt/studygit# ll 總用量 16 drwxr-xr-x 3 root root 4096 8月 28 22:46 ./ drwxr-xr-x 4 root root 4096 8月 28 00:44 ../ drwxr-xr-x 8 root root 4096 8月 28 22:47 .git/ -rw-r--r-- 1 root root 280 8月 28 22:46 introduce.txt
修改introduce.txt文件的內容如圖所示:
修改introduce.txt文件之後,咱們執行git status、git diff、git add <file>,如圖:
咱們繼續對introduce.txt文件進行修改,重複上述步驟,修改:
執行git status、git diff、git add <file>命令,如圖:
如今咱們執行git commit (-m <describtion>)命令,如圖:
咱們會發現,最後一次編輯的內容並無隨着git commit 執行而提交到本地倉庫中去學習
小結
咱們操做的大致流程是:修改--->git add-->再次修改---->git commit
git commit命令,會只提交最近一次git add 命令提交的文件修改內容到本地倉庫中,即便中間有屢次修改,只以最後一次執行git add命令所提交的修改內容爲準,本文中筆者使用的是同一個文件,不一樣文件也是如此。ui
git文件存儲結構
git管理文件總共分爲三塊空間:工做區、本地版本庫、緩衝區,遠程倉庫
工做區:本地電腦的上的一個普通目錄
本地版本庫:git在本地的一個管理文件的文件倉庫
緩衝區:git本地倉庫的一部分,用於存儲要提交到本地倉庫的文件修改數據
遠程倉庫:遠端存儲git管理的文件倉庫,能夠多個本地倉庫進行鏈接,經過git push、git pull與本地倉庫進行文件同步
具體關係如圖:git add把文件添加到stage緩存區,git commit把緩存的數據再提交到當前使用到的分支,圖中dev和遠程倉庫咱們在後續的學習中涉及到,這張圖你們先了解下(圖是具體本身實際操做和網上你們分享的,本身總結的,若是有理解錯誤的,請你們及時指出),經過了解git文件管理結構,咱們能區分git add、git commit命令的各自的做用,以及理解git commit會只提交最後一次git add命令提交的文件改動到本地倉庫的緣由。spa
git刪除文件
建立一個格式文件,並提交到git倉庫中,如圖:
從git上刪除一個文件:
第一步,刪除本地文件 rm <file>
第二步,刪除git上文件 git rm <file>
第三步,提交更改上面的操做咱們會發現,沒有執行「git add」,筆者的理解是提交stage區的操做應該不僅有「git add」,「 git rm 」操做應該也是提交stage區的操做,至於還有沒有其餘操做,筆者限於時間沒有去詳細瞭解,後續有機會會單獨總結,也請你們有了解的,能夠分享出來。3d
二.基於本地倉庫進行撤銷code
本地文件撤銷(修改文件內容未執行git add命令)
使用「git checkout -- <file>」來撤銷相關的修改,如圖:
圖片
暫存區進行撤銷(已經執行了git add命令)
第一步:執行「git reset HEAD <file>」命令,來撤銷移交到暫存區的數據
第二步:執行「git checkout -- <file>」撤銷本地文件的相關修改,
如圖:
get
刪除文件撤銷
只刪除本地文件(沒有執行git rm <file>),應該很簡單也是執行「git checkout -- <file>」
刪除文件提交到stage區(執行了git rm <file>),撤銷
三.總結
新的git命令
git rm <file>
git checkout -- <file>
git reset HEAD <file>
git本地管理文件空間的方式
理解git管理文件的方式,這樣能幫助咱們理解git命令