看了廖雪峰的git教程,很詳細(xì),并且小結(jié)很到位,在此自己再根據(jù)需要總結(jié)一下,方便今后操作查閱,詳情可看git教程
PS:緊記Git跟蹤并管理的是修改,而非文件。
1. 創(chuàng)建版本庫
git init --> 初始化一個Git倉庫
添加文件到git倉庫分2步:
- git add <file>
- git commit -m <message> ps:-m后面輸入的是本次提交的有意義說明
2.版本回退(后悔藥)
Git允許我們在版本的歷史之間穿梭 git reset --hard commit_id
- 回到過去,使用 git log 查看 commit_id
- 重返未來,使用 git reflog 查看commit_id
3.工作區(qū)、暫存區(qū)、版本庫的概念
Git和其他版本控制系統(tǒng)如SVN的一個不同之處就是有暫存區(qū)的概念。
- 工作區(qū):電腦里能看到的目錄
- 暫存區(qū): stage/index ,存放在 ".git目錄下" 下的index文件(.git/index)中,so,也可叫作索引(index)
- 版本庫:工作區(qū)有個隱藏目錄.giit ,是Git的版本庫
修改提交及chexiu操作流程:
工作區(qū)-- git add <file> ---> 暫存區(qū) --git commit -m <meg> --> 版本庫
版本庫--版本回退(未推送到遠(yuǎn)程庫)-->暫存區(qū)--git reset head <file>-->工作區(qū)--git checkout -- file-->丟棄工作區(qū)的修改
簡言之,撤銷修改可分4種
1.沒有g(shù)it add時,用git checkout -- file
2.已經(jīng)git add時,先git reset HEAD <file>回退到1.,再按1.操作
3.已經(jīng)git commit時,用git reset回退版本
4.如已推送到遠(yuǎn)程庫,GG?
這里說說較為難理解的一個點----暫存區(qū)
暫存區(qū)如概念所說是一個index文件
-
git init 初始化倉庫的時候會生成一個文件夾.git(普遍隱藏,可設(shè)置顯示隱藏文件夾),里面內(nèi)容如下
git.jpggit-無暫存區(qū).jpg -
添加一個文本text1,并執(zhí)行
git add .操作,.git下多了個index文件,它就是一個暫存區(qū),也被成為索引 index出現(xiàn)暫存區(qū)文件index.jpg -
執(zhí)行
git status,可見文件被修改,處于暫存區(qū)待提交commit狀態(tài)1.jpg -
此時再來看看暫存區(qū)的內(nèi)容
git ls-files --stage2.jpg -
新增文件text2,并新增到暫存區(qū),再次查看暫存區(qū)內(nèi)容3.jpg
這下便可理解,為何暫存區(qū)被稱為索引(index)-- 指向文件的索引
而真正的文件是存儲在.git/objects目錄,這里不詳說,具體可查閱官方資料-
下面將所有文件提交,查看工作區(qū)、暫存區(qū)的狀態(tài),查看暫存區(qū)的內(nèi)容
4.jpg
由此可見commit后工作區(qū)沒有新增/修改的文件,暫存區(qū)也沒有待提交的文件,暫存區(qū)內(nèi)容不變,并不像我們感性上的被清空,如真的需要刪除暫存區(qū)的內(nèi)容,其實就是刪除index文件的內(nèi)容,存儲在.git/objects目錄下的真正文件是不會被刪除的,如想刪除真正的文件,操作git rm --cached <file>5.jpg
-
在理解了暫存區(qū)的基礎(chǔ)上,我們就能很好的理解了以下命令
6.jpg








