>分布式版本控制系統(tǒng)
什么是分布式版本控制系統(tǒng)义辕,版本控制系統(tǒng)或許大家都知道虾标,古典的程序員都有用過subversion,而svn是集中式的版本控制系統(tǒng)灌砖,而Git是分布式的版本控制系統(tǒng)璧函,那么什么是分布式的,傳統(tǒng)的比如svn都是將版本庫放在服務(wù)器端周崭,而Git則是將版本庫放在了本地柳譬,這使得我們能夠在不聯(lián)網(wǎng)的時候在本地提交版本。
>Git的管理結(jié)構(gòu)
Git在本地可以說可以分為三部分续镇,如下圖:
working directory是我們使用的本地文件美澳,當(dāng)我們修改這些文件之后,我們能夠?qū)⑦@些文件add到暫存區(qū)Stage上摸航,當(dāng)我們提交版本的時候制跟,Git會降Stage上的快照更新到我們提交的版本中去,我們也能夠checkout版本庫中的信息將我們本地的修改抹去酱虎。
接下來我們看看commit的結(jié)構(gòu):
commit的結(jié)構(gòu)是一個樹狀結(jié)構(gòu)雨膨,每個commit都指向一個tree節(jié)點,每個tree節(jié)點都指向若干個快照读串,當(dāng)我們提交的時候聊记,當(dāng)前的commit就會指向上一個版本的commit,組成一條鏈恢暖。如圖:
而分支在Git中又是什么呢排监?當(dāng)我們創(chuàng)建一個分支的時候其實就是創(chuàng)建一個分支指針,這個指針指向某一個commit杰捂,如圖:
branch1分支就是指向第一個commit舆床,而master分支指向最后一個commit,而所謂的當(dāng)前分支就是HEAD指針的指向嫁佳,當(dāng)當(dāng)前分支是master的時候挨队,HEAD指針就指向master,并且從master開始遍歷commit然后生成最后的文件結(jié)構(gòu)蒿往,而當(dāng)我們切換到branch1得時候HEAD就指向branch1盛垦,并從branch1開始遍歷,得到一個文件結(jié)構(gòu)瓤漏。
>常用的Git指令
git init
這個指令用于創(chuàng)建一個git的管理系統(tǒng)情臭,當(dāng)我們在目錄下執(zhí)行這個指令之后省撑,這個目錄就在git的控制下了
git status
這個指令用于查看文件的狀態(tài)
git add
可以將修改的文件或者新加入的文件放入暫存區(qū)stage
git commit
可以將暫存區(qū)中的快照集成一個版本提交
git diff
可以查看修改文件和源文件或者兩個commit的差距
git remote
可以設(shè)置遠(yuǎn)程庫
git push
可以將本地的版本庫更新到遠(yuǎn)程庫
git pull
可以將遠(yuǎn)程庫更新到本地
git clone
可以克隆整個版本庫到本地
git log
可以查看commit
git checkout
用法非常多6拿铩8┰凇!娃惯!
git revert
恢復(fù)到一個版本跷乐,并提交一個恢復(fù)版本的commit
git branch
創(chuàng)建查看分支
git merge
合并分支
git stash
將修改放入棧中,以便進行先必要操作將來取出