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