關(guān)于版本控制
版本控制是一種記錄若干文件內(nèi)容變化,以便將來查閱特定版本修訂情況的系統(tǒng)。
如果你是位圖形或網(wǎng)頁設(shè)計(jì)師教届,可能會(huì)需要保存某一幅圖片或頁面布局文件的所有修訂版 本。采用版本控制系統(tǒng)(VCS)是個(gè)明智的選擇驾霜。有了它你就可以將某個(gè)文件回溯到之前的 狀態(tài)案训,甚至將整個(gè)項(xiàng)目都回退到過去某個(gè)時(shí)間點(diǎn)的狀態(tài)。你可以比較文件的變化細(xì)節(jié)粪糙,查 出是誰最后修改了什么地方從而造成某些怪異問題强霎,又是誰在何時(shí)報(bào)告了某個(gè)功能缺陷, 等等蓉冈。使用版本控制系統(tǒng)通常還意味著城舞,就算你胡來搞砸了整個(gè)項(xiàng)目,把文件改的改寞酿,刪的刪家夺,你也可以輕松恢復(fù)到原先的樣子。而由此額外增加的工作量卻微乎其微伐弹。
1 本地版本控制系統(tǒng)
大多本地版本控制系統(tǒng)都是采用某種簡單的數(shù)據(jù)庫來記錄文件的歷次更新差異拉馋。如下圖:
2 集中化的版本控制系統(tǒng)
這類系統(tǒng),諸如 CVS,Subversion 以及 Perforce 等煌茴,都有一個(gè)單一的集中管理的服務(wù)器随闺,保存所有文件的修訂版本,而協(xié)同工作的人們都通過客戶端連到這臺(tái)服務(wù)器蔓腐,取出最新的文件或 者提交更新矩乐。如下圖:
3 分布式版本控制系統(tǒng)
在這類系統(tǒng)中,諸如 Git合住,Mercurial绰精,Bazaar 還有 Darcs 等,客戶端并不只提取最新版本的文件快照透葛,而是把原始的代碼倉庫完整地鏡像下來。這么一來卿樱,任何一處協(xié)同工作用的服務(wù)器發(fā)生故障僚害,事后都可以用任何一個(gè)鏡像出來的本地倉庫恢復(fù)。因?yàn)槊恳淮蔚奶崛〔僮鞣钡鳎瑢?shí)際上都是一次對(duì)代碼倉庫的完整備份萨蚕。如下圖:
安裝Git
有許多安裝方式,概況起來主要有兩個(gè)蹄胰,一種是通過編譯源代碼來安裝岳遥;另一種是使用為特定平臺(tái)預(yù)編譯好的安裝包。
-
在Linux上安裝
如果要在Linux上安裝預(yù)編譯好的git二進(jìn)制安裝包裕寨,可以直接使用系統(tǒng)提供的包管理工具浩蓉。在Fedora上yum安裝:
$ yum install git-core
在Ubuntu這類Debian體系的系統(tǒng)上,可以用apt-get安裝:
$ apt-get install git-core
-
在Mac上安裝
在Mac上安裝git有兩種方式宾袜。最容易的當(dāng)屬使用圖形化的git安裝工具捻艳,下載地址:
另一種是通過Macports(http://www.macports.org)安裝。安裝好Macports之后庆猫,使用下面的命令安裝git:
$ sudo port install git-core +svn +doc +bash_competition +gitweb
-
在Windows上安裝
- 有個(gè)叫做msysgit的項(xiàng)目提供了安裝包认轨,可以從Google code的頁面上下載安裝文件:
安裝完之后,就可以使用命令行的git工具了月培,另外還有一個(gè)圖形界面的git項(xiàng)目管理工具嘁字。
常用git命令
-
用戶信息配置
要配置的是你個(gè)人的用戶名稱和電子郵件地址。這兩條配置很重要杉畜,每次git提交都會(huì)引用這兩條信息纪蜒,說明是誰提交了更新。
$ git config --global user.name "" $ git config --global user.email ...
-
設(shè)置的是默認(rèn)使用的文本編輯器
默認(rèn)會(huì)使用操作系統(tǒng)指定的默認(rèn)編輯器寻行,一般可能會(huì)是 Vi 或者 Vim霍掺。也可以重新設(shè)置:
$ git config --global core.editor ...
-
獲取幫助說明指令
git help [子命令]
-
初始化本地倉庫
使用以下命令會(huì)生成一個(gè).git文件夾(本地代碼倉庫),.git文件夾用來管理本地代碼,修改上傳杆烁,版本回退牙丽。
git init
-
查看配置信息
查看信息是否配置成功
git config -l
-
將創(chuàng)建的文件添加到stage暫存區(qū)
git add .
-
提交文件到指定的分支(默認(rèn)mater分支)
git commit -m "(添加注釋說明)"
-
刪除文件并提交
git rm 文件名
-
將刪除的文件提交到本地庫
git commit -m "(添加注釋說明)"
-
查看日志
查看git的更新日志和40位哈希值版本號(hào)
git log
查看git的更新日志和7位哈希值版本號(hào)
git relog
-
代碼版本回退
重置到當(dāng)前版本 git reset --hard HEAD 重置到上上個(gè)版本 git reset --hard HEAD^^ 重置到往上3個(gè)版本 git reset --hard HEAD~3 重置到指定版本 git reset --hard 七位版本號(hào)
-
恢復(fù)
恢復(fù)某次提交的狀態(tài) git revert <$id> 恢復(fù)最后一次提交的狀態(tài) git revert HEAD
-
查看、切換兔魂、創(chuàng)建烤芦、刪除分支
-
查看分支
查看遠(yuǎn)程分支
git branch -r
查看各個(gè)分支最后提交的信息
git branch -v
查看已經(jīng)被合并到當(dāng)前分支的分支
git branch --merged
查看尚未被合并到當(dāng)前分支的分支
git branch --no --merged
-
切換分支
git checkout <branch>
-
創(chuàng)建新分支
創(chuàng)建新的分支并且切換過去
git checkout -b <new_branch>
創(chuàng)建基于branch分支的新分支new_branch
git checkout-b <new_branch> <branch>
把某次歷史記錄checkout出來并創(chuàng)建新分支
git checkout $id -b <new_branch>
-
刪除分支
刪除某個(gè)分支
git branch -d <branch>
強(qiáng)制刪除某個(gè)分支(未被合并的分支在被刪除時(shí)需要強(qiáng)制)
git branch -D <branch>
-
-
git暫存管理
暫存
git stash
列所有暫存區(qū)
git stash list
恢復(fù)暫存區(qū)的內(nèi)容
git stash apply
刪除暫存區(qū)
git stash drop
-
git遠(yuǎn)程倉庫管理
查看遠(yuǎn)程服務(wù)器地址
git remote -v
查看遠(yuǎn)程服務(wù)器倉庫狀態(tài)
git remote show origin
添加遠(yuǎn)程倉庫地址
git remote add origin ...
刪除遠(yuǎn)程倉庫
git remote rm <repository>
-
git遠(yuǎn)程分支管理
-
遠(yuǎn)程分支抓取
抓取遠(yuǎn)程倉庫所有分支更新并合并到本地
git pull
抓取遠(yuǎn)程倉庫所有分支更新并合并到本地,不要快進(jìn)合并
git pull --no--ff
-
push遠(yuǎn)程分支
push所有分支
git push
將本地分支推到遠(yuǎn)程主分支
git push origin master
將本地主分支推到遠(yuǎn)程(如無遠(yuǎn)程主分支則創(chuàng)建析校,用于初始化遠(yuǎn)程倉庫)
git push -u origin master
創(chuàng)建遠(yuǎn)程分支
git push origin <local_branch>
創(chuàng)建遠(yuǎn)程分支git push origin <local_branch>:<remote_branch>
先刪除本地分支构罗,然后再push刪除遠(yuǎn)程分支git push origin :<remote_branch>
?
-
Git與GitHub
? GitHub是目前為止最大的開源Git托管服務(wù),并且是少數(shù)同時(shí)提供公共托管和私人托管服務(wù)的站點(diǎn)之一智玻。
接下來的內(nèi)容主要描述講解如何使用git來將本地倉庫與GitHub賬戶的倉庫建立連接遂唧。
-
建立本地git倉庫
進(jìn)入你要同步的本地項(xiàng)目的根目錄下,執(zhí)行g(shù)it命令:
git init
-
將項(xiàng)目中所有的文件添加到倉庫中
git add .
如果只想添加某個(gè)特定的文件吊奢,只需把 . 換成特定文件名即可盖彭。
-
將add進(jìn)來的文件提交到倉庫
git commit -m "(添加注釋語句 )"
-
在自己GitHub上創(chuàng)建一個(gè)倉庫(repository),界面如下:
Repository name:填寫倉庫名稱
Description:描述页滚,填寫倉庫的主題召边、內(nèi)容
Public、Private:倉庫類型可選:公有裹驰、私有
Initialize this repository with a README:初始化readme說明文件
最后隧熙,點(diǎn)擊Create repository就可以成功創(chuàng)建倉庫了。
-
獲取倉庫地址
要想本地倉庫與遠(yuǎn)程建立連接幻林,需要有遠(yuǎn)程倉庫的地址贞盯,獲取方法如下圖:
?
-
將本地倉庫關(guān)聯(lián)到GitHub上
進(jìn)入本地倉庫目錄,執(zhí)行如下git命令:
git remote add origin ...(遠(yuǎn)程倉庫地址)
-
在上傳本地目錄之前滋将,要先pull一下邻悬,執(zhí)行如下git命令:
git pull origin master
-
上傳本地倉庫到GitHub遠(yuǎn)程倉庫
git push -u origin master
執(zhí)行完成,如果沒有異常随闽,等待上傳完成就上傳成功父丰。期間會(huì)要求輸入賬戶名和密碼,只需要輸入GitHub的賬戶和密碼就行掘宪。
Git GUI
Git有提供圖形界面蛾扇,下面簡要介紹如何使用。
-
打開Git GUI魏滚,在右下角處選擇"重新掃描"镀首,如下:
-
掃描完成后,在左上角處會(huì)顯示"未緩存的改動(dòng)"鼠次,如下:(點(diǎn)擊左邊的圖標(biāo)即可將文件添加到已緩存區(qū))
-
點(diǎn)擊左側(cè)圖標(biāo)更哄,將"未緩存文件"添加到"已緩存文件"芋齿,如下:
-
在"提交描述"框內(nèi)填寫此次修改的目的和原因,然后提交成翩。
第一行:一句話概況你做的修改觅捆。
第二行:空行。
第三行:請(qǐng)描述為什么你做的這些改動(dòng)是好的麻敌。
?
-
最后提交栅炒,會(huì)要求輸入用戶名和密碼,同樣是GitHub的賬戶名和密碼即可术羔。
-
上傳成功赢赊,提示如下:
大概流程差不多這樣了,還有其他一些功能级历,比如分支管理释移,等深入學(xué)習(xí)了有時(shí)間再分享。
后言
感謝閱讀寥殖,歡迎指教秀鞭。本人簡書和GitHub —>(簡書/GitHub)
good luck!