版本控制Git

2021-09-21 01:42:22 字數 2010 閱讀 1549

版本控制工具!git是目前世界上最先進的分布式版本控制系統(沒有之一)。

這個軟體用起來就應該像這個樣子,能記錄每次檔案的改動

這樣,你就結束了手動管理多個「版本」的史前時代,進入到版本控制的20世紀。

在2023年以前,世界各地的志願者把源**檔案通過diff的方式發給linus,然後由linus本人通過手工方式合併**!你也許會想,為什麼linus不把linux**放到版本控制系系統呢?不是有cvs、svn這些免費的版本控制系統嗎?因為linus堅定地反對 cvs和svn,這些集中式的版本控制系統不但速度慢,而且必須聯網才能使用。有一些商用的版本控制系統,雖然比cvs、svn好用,但那是付費的,和 linux的開源精神不符。

linus花了兩周時間用c寫了乙個分布式版本控制系統,這就是git!乙個月之內,linux系統的原始碼已經由git管理了!git迅速成為最流⾏的分布式版本控制系統,尤其是2023年,github**上線了,它為開源專案免費提供git儲存,無數開源專案開始遷移到github,包括jquery,php,ruby等等。

1.集中式vs分布式

linus一直痛恨的cvs及svn都是集中式的版本控制系統,而git是分布式版本控制

(1)集中式版本控制系統

版本庫是集中存放在**伺服器的,你幹活的時候,用的都是自己的電腦,所以要先從

**伺服器取得最新的版本,然後開始幹 活,幹完活了,再把自己的活推送給**服

務器。**伺服器就好比是乙個圖書館,你要改一本書,必須先從圖書館借出來,然後

回到家自己改,改完了,再放回圖書館。集中式版本控制系統最大的弊端就是必須聯網

才能工作,如果在區域網內還好,速度夠快,可如果在網際網路上,遇到網速慢的話,可

能提交個10m的檔案就需要5分鐘,這還不得把人給憋死啊。

(2)分布式版本控制系統根本

沒有「**伺服器」,每個⼈的電腦上都是乙個完整的版本庫,這 樣,你工作的時候,

就不需要聯網了,因為版本庫就在你自己的電腦上。既然每個認電腦上都有個完整的版

本庫,那多個人如何協作呢?比如說你在自己電腦上改 了檔案a,你的同事也在他的

電腦上改了檔案a,這時,你們倆之間只需把各自的修改推送給對方,就可以互相看到

對方的修改了。和集中式版本控制系統相比,分布式版本控制系統的安全性要好很多,

因為每個電腦裡都有完整的版本庫,某個人的電腦壞掉了不要緊,而集中式版本控制

系統的**伺服器要是出了問題,所有人都沒法幹活了

git執行方式如圖

2.工作區和暫存區

git和其他版本控制系統如svn的乙個不同之處就是有暫存區的概念

工作區(working directory):就是你在電腦⾥能看到的目錄,

版本庫(repository):工作區有個隱藏目錄「.git」,這個不算工作區,而是git的版本

庫,git的版本庫存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區,還

有git為我們主動建立的第乙個分支master,以及指向master的乙個指標叫head。

我們把檔案往git版本庫中新增的時候,是分兩步執行的:

第一步是用「git add」把檔案新增進去,實際上就是把檔案修改新增到暫存區;第二步

是用「git commit」提交更改,實際上就是把暫存區的所有內容提交到當前分支。因為

我們建立git版本庫時,git主動為我們建立了唯一乙個master分支,所以,現在,

commit就是往master分支上提交更改。你可以簡單理解為,需要提交的⽂件修改通

通放到暫存區,然後,一次性提交暫存區的所有修改

詳細看博主原文:

git版本控制

1.git 是乙個開源的分布式版本控制系統,可以有效 高速的處理從很小到非常大的專案版本 管理。2.git配置管理 一般,有乙個 集中庫,包含4個分支 qa才能merge production 發布生產,出現生產問題,轉hotfix 研發經理 hotfix 解決緊急生產問題,測試後轉producti...

版本控制 Git

git 是目前世界上最先進的開源的分布式版本控制系統 沒有之一 用於敏捷高效地處理任何或小或大的專案。git 是 linus torvalds 為了幫助管理 linux核心開發而開發的乙個開放原始碼的版本控制軟體。git 與常用的版本控制工具 cvs,subversion 等不同,它採用了分布式版本...

GIT版本控制

不同情況下,實現版本回退 1.對於修改內容後,未add,未commit 可以利用git checkout 檔名 2.對於修改內容後,add,未commit get reset head 檔名 git checkout 檔名 3.對於修改內容後,add,commit 可以回到任何乙個版本 root g...