一.什么是git?
? ? git是一款分布式版本管理,比svn靈活,性能更加優(yōu)越,現(xiàn)在國內(nèi)越來越多的開發(fā)者都在使用git
二.何為分布式?
? ? 與svn不同,git分為遠(yuǎn)程(remote)倉庫與(location)倉庫肢预,開發(fā)者即可以將代碼提交到本地倉庫,也可以提交到遠(yuǎn)程倉庫洼哎,為程序開發(fā)帶來了大大的便利烫映。
三.git的工作原理
? ? git分為兩個(gè)區(qū)域:1>工作區(qū)域
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2>版本控制區(qū)域(.git文件)
? ? 顧名思義,工作區(qū)域就是我們的project所在的地方噩峦。
? ? 版本控制區(qū)域中又被分為了暫緩區(qū)與分支區(qū)(HEAD指針一直指向了默認(rèn)branch)
? ? 工作流程:我們?cè)诠ぷ鲄^(qū)完成了一個(gè)業(yè)務(wù)锭沟,將工作區(qū)的內(nèi)容添加到暫緩區(qū),再將暫緩區(qū)的內(nèi)容提交到分支中识补,最終我們把本地倉庫push到遠(yuǎn)程倉庫族淮。
四.常用的git指令
? ? git init /** 初始化一個(gè)git倉庫 */
? ? git clone 倉庫url ? ?/** 將遠(yuǎn)程倉庫克隆到本地 */
? ? git add . ? ? ? ? ? ? ? ?/** 將工作區(qū)內(nèi)容添加到暫緩區(qū) */
? ? git commit -m "版本信息" ?/** 將暫緩區(qū)內(nèi)容提交到分支中 ,git的commit操作必須提供版本信息的描述*/
? ? git config -l ?/** 查看git的配置文件,.git文件下會(huì)用一個(gè)config文件,里面存放這git的相關(guān)配置,如成員的name,成員的email凭涂,遠(yuǎn)程倉庫的url,git指令別名信息.... */
? ? git config alias.ci "commit -m" /** 為git指令起別名 ?這里是將commit -m起了一個(gè)ci的別名祝辣。注意:如果是單指令無需用"",如git config alias.st status*/
? ? git config -global /** 為git設(shè)置全局(整臺(tái)pc)的配置 */
? ? git status /** 查看當(dāng)前狀態(tài) */
? ? git log /** 查看版本歷史記錄 */
? ? git pull /** 更新本地倉庫 */
? ? git push /** 將本地分支提交到遠(yuǎn)程倉庫 */
? ? git rm /** 刪除某個(gè)文件,注意:這個(gè)指令僅僅是對(duì)于暫緩區(qū)的,不會(huì)影響到分支中的信息,因此需要進(jìn)行一次git commit -m 操作 */
? ? git reset --hard HEAD^ /** 回退到上一版本,HEAD^^代表著回退到上兩個(gè)版本,HEAD~100代表著回退到前一百個(gè)版本,git reset --hard 版本號(hào) ?回退到這個(gè)版本號(hào)的版本。 git的一個(gè)強(qiáng)大之處在于可以無限次的返回,即可以回退到之前的版本也可以回退到之后的版本*/
? ?git reflog /** 查看指令使用記錄,可以獲取到我們回退前的版本號(hào) */
? ?git diff /** 查看所有文件的最新改動(dòng) */
五.知名的git站點(diǎn)
? ? github就不用談了,而且還提供了fork與圖形化工具,但是要使用私有倉庫需要付費(fèi)
? ? git.oschina.net ?開源中國提供了公開與私有的git倉庫,關(guān)鍵它是免費(fèi)的
六.自己常用的git指令別名
? ? git config --global alias.cfg config
? ? git cfg --global?alias.ci "commit -m"
? ? git cfg --global?alias.st status
? ? git cfg --global?alias.log1 "log --preety=oneline"
? ? git cfg --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
??