建立linux的大佬 linus ,花了兩周時間自己用c寫的乙個分布式版本控制系統。
在2023年以前,世界各地的志願者把源**檔案通過diff的方式發給linus,然後由linus本人通過手工方式合併**!
為什麼linus不把linux**放到版本控制系統裡呢?
不是有cvs、svn這些免費的版本控制系統嗎?因為linus堅定地反對cvs和svn,這些集中式的版本控制系統不但速度慢,而且必須聯網才能使用。有一些商用的版本控制系統,雖然比cvs、svn好用,但那是付費的,和linux的開源精神不符。
git迅速成為最流行的分布式版本控制系統,尤其是2023年,github**上線了,它為開源專案免費提供git儲存,無數開源專案開始遷移至github,包括jquery,php,ruby等等。
集中式版本控制系統,版本庫是集中存放在**伺服器的,而幹活的時候,用的都是自己的電腦,所以要先從**伺服器取得最新的版本,然後開始幹活,幹完活了,再把自己的活推送給**伺服器。**伺服器就好比是乙個圖書館,你要改一本書,必須先從圖書館借出來,然後回到家自己改,改完了,再放回圖書館。
集中式版本控制系統最大毛病是必須聯網才能工作。遇到網速慢就十分影響工作效率。
分布式就沒有「**伺服器」,每個人的電腦都是乙個完整的版本庫,工作的時候不需要聯網(版本庫就在個人電腦上),每個人的電腦上都是乙個完整的版本庫。分布式版本控制系統通常也有一台充當「**伺服器"的電腦,但是該伺服器的作用僅僅是方便大家的修改,沒他照樣幹活。
以下是scrat學習 git 時製作的xmind。
拉取遠端伺服器上**並合併到本地倉庫。
$git checkout localbranch
$git pull origin master
$git branch
master
*localbranch
上面的命令會將遠端伺服器上的master分支合併到localbranch中。
拉取不合併。
$git checkout localbranch
$git fetch origin remotebranch
$git branch
master
*localbranch
remotebranch
獲取 remote branch, 然後建立乙個本地copy,你不應該直接對這個copy做任何的操作,而應該應該建立乙個本地分支,然後在本地分支上進行工作。
clone將會轉殖乙個本地廠庫,最初的git命令。
$
cd
newfolder
$git clone [email protected]:whatever
/something
.git
$git branch
*master
remotebranch
clone會為它被轉殖的遠端repo建立名為「origin」的local repo,並為遠端repo的活動分支建立乙個本地分支以及遠端跟蹤分支。
這個命令相當的cool, 你對當前分支所作的任何改變都被儲存到乙個臨時區域,因此你的分支將會和改變之前一樣乾淨。如果你用git pull -rebase,git將會獲取遠端的改變,遍歷當前本地分支,然後替換你當前分支的所有改動。
如果你在使用過程中遇到了問題,使用git branch -a, 它會顯示本地廠庫的所有分支:本地的,遠端的。這是乙個很好的殺手鐗,請記住,git bracches只是乙個pointer。所以為了能夠處理這些提交請求,你需要乙個本地分支,通過本地分支你可以獲取這些提交。
參考:更多: python目錄
快速上手Git
本文主要摘錄於廖雪峰的git教程,個別地方做了可能不恰當的修改或補充,主要方便自己回顧。檢視更詳細內容請移步廖老師部落格。同時,感謝廖老師寫出這麼好的入門指導。有彩蛋!一 熱身 1.初始化乙個git倉庫。先進入到乙個本地目錄下,然後使用git init命令將目錄初始化。2.新增檔案到git倉庫,需要...
git快速上手教程
前幾周我第一次同時推進幾個任務,結果迷失在git版本的海洋中不能自拔。後來在同事的幫助下終於脫坑,在此把一些git的簡明用法分享給git新手們。git是用來進行版本控制的,對於同乙個專案,不同的電腦上可以存有不同的版本,同一臺電腦上也可以儲存多個版本。每個版本或者有唯一的父版本,或者由兩個版本合併而...
Git快速上手教程
首先在你的github上新建專案。然後安裝好git後,找到你專案的資料夾輸入如下命令 git init git commit m frist commit git remote add origin 你的專案位址.git git push u origin master 當你遇見這個問題時,原因是你...