一、一些概念
工作區:就是在電腦裏看到的目錄就指工作區
版本庫:工作區有一個隱藏目錄 .git 這裏面不算工作區,而是版本庫
版本庫裏面包含了stage(暫存區),還有Git爲我們自動創建的第一個分支master
,以及指向master
的一個指針叫HEAD
二、相關的原理
工作區的文件往版本庫添加的時候,分爲兩步:
1.git add 實際上就是把文件修改添加到暫存區
2.git commit 實際上就是把暫存區的所有內容提交到當前分支master
換句話說就是,commit命令會一次性的將暫存區文件的所有修改
也就是說工作區的文件修改後如果沒有提交到暫存區,那麼commit是無意義的。而git add命令可以提交多次。
三、管理修改
什麼是修改?比如你新增了一行,這就是一個修改,刪除了一行,也是一個修改,更改了某些字符,也是一個修改,刪了一些又加了一些,也是一個修改,甚至創建一個新文件,也算一個修改。
git要識別是否修改了相關文件,一般的操作是
修改 => add =>commit
如果跳過add 直接commit 修改就不會被提交
四、撤銷修改
git checkout --file 可以丟棄工作區的修改
比如有一個haha.txt文件 包含了一行文字內容
你是我的小丫小蘋果
然後你在添加了一段文字火火火火火
且保存了。如果不想要後面新添加的這一段文字,可以
1.手動刪除 然後保存
2.git checkout -- haha.txt(要注意格式,倆橫線左右都要留空格)
這個命令的執行也分兩種情況,一是還沒放到暫存區,那撤銷修改就回到和版本庫一樣的狀態,就是回到上一次commit時的狀態
二是放到了暫存區後又做了修改,那就會回到上一次add時的狀態
那麼假如工作區的文件做了修改,且add到了暫存區的話,可以用
git reset HEAD file 把暫存區的修改撤銷掉,重放會工作區。
第三種情況,不僅修改不僅add到了暫存區,還commit到了版本庫,怎麼辦?
那就可以用到版本回退。
五、刪除文件
在Git中,刪除也是修改。
比如講一個新文件add和commit到倉庫中,然後刪除該文件,這時工作區和版本庫不一致,用git status查看就會被告知那個文件被刪除了。
這時你可以做兩件事:
1.確定將該文件從版本庫中刪除,用命令 git rm file 並且commit
2.恢復誤刪的文件 用命令 git checkout -- file 一鍵還原