git 版本控制的一些命令


git add .  暫存區的目錄樹會更新,同時將工作區修改或新增的內容寫到了對象庫一個新對象,該對象的ID被記錄在暫存區的文件索引中,工作區後續的add 和 暫存區後續的commitf都更新到這個id對應的對象中

git commit 暫存區的目錄樹寫入對象庫,head指向新的暫存區的那個目錄樹。(簡單理解:將暫存區的內容更新到對象庫中,並且會備份一個該對象,用HEAD指向這個備份)

git checkout -- 文件名  撤銷工作區中文件尚未提交的修改。  實質:只是將暫存區的內容覆蓋到了工作區。

git rm --cached 文件名  會將暫存區的指定文件刪除,工作區不受影響

git reset HEAD 會將HEAD指向的備份全部重寫到暫存區,工作區不受影響

git checkout HEAD . 或 git checkout HEAD 文件名 會HEAD的覆蓋到工作區和暫存區。所以工作區沒有commit內容會被清除

-------對比


git diff   用於工作區與暫存區的比較
git diff HEAD 或 git diff master 用於工作區與 HEAD比較
git diff --cached 或 git diff --cached HEAD  用於與暫存區與HEAD比較

-----重置   HEAD遊標的控制


git reset HEAD^  將HEAD指向的目錄樹恢復到暫存區,工作區不影響  

git reset --soft HEAD^  工作區和暫存區不改變,但是引用向前回退一次。  可以實現多次提交合併爲一次提交

git reset --hard HEAD^   或 git reset --hard 9e8a761  將遊標指向上次提交或任意一次提交,同時工作區也會跟着被覆蓋

重置後,重置後的版本之後的版本id就不能在提交歷史中看到,
可以git reflog 查看版本的變化,查到重置版本後的版本號

git reset -- filename   或 git reset  僅將全部文件或指定文件撤出暫存區,相當於 git add 的反向操作

 

-----取消跟蹤並保存文件在本地

git rm --cached readme1.txt    刪除readme1.txt的跟蹤,並保留在本地。

git rm --cached xxDir    刪除xxDir的跟蹤,並保留在本地。

使用該命令後,.gitignore文件中被配置的路徑纔會生效

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章