version control(版本控制)
版本控制系統(tǒng)(version control system),是一種記錄一個(gè)或若干文件內(nèi)容變化,以便將來(lái)查閱特定版本修訂情況的系統(tǒng)。版本控制系統(tǒng)不僅可以應(yīng)用于軟件源代碼的文本文件,而且可以對(duì)任何類型的文件進(jìn)行版本控制。用的比較多的如svn,git等。
為了讓不同系統(tǒng)上的開(kāi)發(fā)者能夠協(xié)同工作,集中化的版本控制系統(tǒng)應(yīng)運(yùn)而生(CVCS)。這類系統(tǒng)都有一個(gè)單一的集中管理的服務(wù)器,保存所有文件的修訂版本。而協(xié)同工作的人們都通過(guò)客戶端連接到這臺(tái)服務(wù)器,獲取最新的文件或者提交更新。集中化的版本控制系統(tǒng),最顯而易見(jiàn)的缺點(diǎn)是中央服務(wù)器的單點(diǎn)故障問(wèn)題。如果宕機(jī),那么就會(huì)出現(xiàn)誰(shuí)都無(wú)法提交更新的情況,那么也就無(wú)法協(xié)同工作;如果磁盤發(fā)生故障,而備份又不夠即時(shí),那么就有丟失數(shù)據(jù)的風(fēng)險(xiǎn),最壞的情況是丟失整個(gè)項(xiàng)目的歷史更改記錄。因此,分布式版本控制系統(tǒng)問(wèn)世了(DVCS)。
在分布式版本控制系統(tǒng)中,客戶端不僅僅是只提取最新版本的文件快照,而是把代碼倉(cāng)庫(kù)完整的鏡像下來(lái)。所以每一次提取的操作,都是對(duì)代碼倉(cāng)庫(kù)的完整備份,因此也就不必?fù)?dān)心協(xié)同工作用的服務(wù)器發(fā)生故障。
Git和其他版本控制系統(tǒng)的主要差別在于:Git只關(guān)心文件數(shù)據(jù)的整體是否發(fā)生了變化,而多數(shù)的其他系統(tǒng)則只關(guān)心文件內(nèi)容的具體差異,它們?cè)诿總€(gè)版本中記錄著各個(gè)文件的具體差異。在Git中的絕大多數(shù)操作都只需要訪問(wèn)本地文件和資源,不需要聯(lián)網(wǎng)。這是因?yàn)镚it在本地磁盤上就保留著所有當(dāng)前項(xiàng)目的歷史更新,所以處理起來(lái)速度飛快,這是使用空間換時(shí)間的處理方式。使用Git,即使在沒(méi)有網(wǎng)絡(luò)或VPN的情況下,你同樣可以非常愉快的頻繁提交更新,等到有了網(wǎng)絡(luò)的時(shí)候再提交到遠(yuǎn)程的倉(cāng)庫(kù)。
Git入門
使用Git前,需要先建立一個(gè)倉(cāng)庫(kù)(repository)。您可以使用一個(gè)已經(jīng)存在的目錄作為Git倉(cāng)庫(kù)或創(chuàng)建一個(gè)空目錄。
使用您當(dāng)前目錄作為Git倉(cāng)庫(kù),我們只需使它初始化。
git init
使用我們指定目錄作為Git倉(cāng)庫(kù)。
git init newrepo
從現(xiàn)在開(kāi)始,我們將假設(shè)您在Git倉(cāng)庫(kù)根目錄下,除非另有說(shuō)明。
添加新文件
我們有一個(gè)倉(cāng)庫(kù),但什么也沒(méi)有,可以使用add命令添加文件。
git add filename
可以使用add... 繼續(xù)添加任務(wù)文件。
提交版本
現(xiàn)在我們已經(jīng)添加了這些文件,我們希望它們能夠真正被保存在Git倉(cāng)庫(kù)。
為此,我們將它們提交到倉(cāng)庫(kù)。
git commit -m "Adding files"
如果您不使用-m,會(huì)出現(xiàn)編輯器來(lái)讓你寫自己的注釋信息。
當(dāng)我們修改了很多文件,而不想每一個(gè)都add,想commit自動(dòng)來(lái)提交本地修改,我們可以使用-a標(biāo)識(shí)。
git commit -a -m "Changed some files"
git commit 命令的-a選項(xiàng)可將所有被修改或者已刪除的且已經(jīng)被git管理的文檔提交到倉(cāng)庫(kù)中。
千萬(wàn)注意,-a不會(huì)造成新文件被提交,只能修改。
發(fā)布版本
我們先從服務(wù)器克隆一個(gè)庫(kù)并上傳。
git clone ssh://example.com/~/www/project.git
現(xiàn)在我們修改之后可以進(jìn)行推送到服務(wù)器。
git push ssh://example.com/~/www/project.git
取回更新
如果您已經(jīng)按上面的進(jìn)行push,下面命令表示,當(dāng)前分支自動(dòng)與唯一一個(gè)追蹤分支進(jìn)行合并。
git pull
從非默認(rèn)位置更新到指定的url。
git pull http://git.example.com/project.git
刪除
如何你想從資源庫(kù)中刪除文件,我們使用rm。
git rm file
分支與合并
分支在本地完成,速度快。要?jiǎng)?chuàng)建一個(gè)新的分支,我們使用branch命令。
git branch test
branch命令不會(huì)將我們帶入分支,只是創(chuàng)建一個(gè)新分支。所以我們使用checkout命令來(lái)更改分支。
git checkout test
第一個(gè)分支,或主分支,被稱為"master"。
git checkout master
對(duì)其他分支的更改不會(huì)反映在主分支上。如果想將更改提交到主分支,則需切換回master分支,然后使用合并。
git checkout master
git merge test
如果您想刪除分支,我們使用-d標(biāo)識(shí)。
git branch -d test
轉(zhuǎn)載于:https://www.cnblogs.com/XZY30/p/10478368.html
總結(jié)
以上是生活随笔為你收集整理的version control(版本控制)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: pwnable.tw unexplo
- 下一篇: webpack初体验