Git原理入門解析

2021-09-29 15:49:44 字數 2235 閱讀 2111

前言:自己第一次聽到git應該是一年前了,當時很懵,不知道它是幹啥的,在網上搜尋了很多文章,一直不是太明白;今天我來記錄一下自己對git的學習,如果對其他童鞋有所幫助,我榮幸之至!

git是什麼?

git是目前世界上最先進的分布式版本控制系統(沒有之一)。最初由 linux torvalds (linux 之父) 創造,於 2005 年發布。

git的歷史:很多人都知道,linus (我給他叫小雷)在 1991 年建立了開源的 linux,從此,linux 系統不斷發展,已經成為最大的伺服器系統軟體了。

小雷 雖然建立了 linux,但 linux 的壯大是靠全世界熱心的志願者參與的,這麼多人在世界各地為 linux 編寫**,那 linux 的**是如何管理的呢

事實是,在 2002 年以前,世界各地的志願者把源**檔案通過 diff 的方式發給 linus,然後由 小雷 本人通過手工方式合併**!

你也許會想,為什麼 linus 不把 linux **放到版本控制系統裡呢?不是有 cvs、svn 這些免費的版本控制系統嗎?為啥?因為小雷覺得它也不好用呀:速度慢、必須連網,你這讓網路不好的盆友怎麼辦,因此,小雷反對 cvs 和 svn。有一些商用的版本控制系統,比 cvs、svn 好用,雖然小雷不缺錢吧,但是它和小雷的價值觀不一樣呀(小雷要的是開源免費,你tm竟然收費)。

到了 2002 年,linux 系統已經發展了十年了,**庫之大讓小雷通過手工的方式忙不過來了,社群的弟兄們也覺得小雷的手工方式有點low,於是小雷選擇了乙個商業的版本控制系統 bitkeeper,bitkeeper 的東家 bitmover 公司出於人道主義精神,授權 linux 社群免費使用這個版本控制系統。

安定團結的大好局面在 2005 年就被打破了,原因是 linux 社群大佬太多,不免沾染了一些梁山好漢的江湖習氣。開發 samba 的 andrew 試圖破解 bitkeeper 的協議(這麼幹的其實也不只他乙個),被 bitmover 公司發現了(監控工作做得不錯!),於是 bitmover 公司怒了,要收回 linux 社群的免費使用權(讓你免費用還反過來搞我,不讓你用了,除非給我道歉)。

小雷可以向 bitmover 公司道個歉,保證以後嚴格管教弟兄們,嗯,這是不可能的。實際情況是:linus 花了兩周時間自己用 c 寫了乙個分布式版本控制系統,這就是 git!乙個月之內,linux 系統的原始碼已經由 git 管理了!牛是怎麼定義的呢?大家可以體會一下。

歷史就是這麼偶然,如果不是當年 bitmover 公司威脅 linux 社群,可能現在我們就沒有免費而超級好用的 git 了。

不管是集中式的 cvs、svn 還是分布式的 git 工具,實際上都是一種版本控制系統,我們可以通過他們很方便的管理我們的檔案、**等,我們可以先來暢想一下如果自己來設計這麼乙個系統,你會怎麼設計?

摁,這不禁讓我想起了之前寫畢業**的日子,我先在乙個開闊的空間建立了乙個資料夾用於儲存我的各種版本,然後開始了我的 「畢業**版本管理」,參考下圖:

並且可能問題還遠不止於此,所以每每想起,就不自覺對小雷膜拜了起來。

git有什麼特點? 簡單來說就是:高階大氣上檔次!

首先,讓我們來建立乙個空的專案目錄,並進入該目錄。

$ mkdir new-project

$ cd new-project

如果我們打算對該專案進行版本管理,接下來使用 git init 命令,進行初始化。

$ git nint
之後就可以對new-project下的檔案進行版本控制了

$ git add   //表示提交乙個檔案到快取區中

$ git commit -m'提交注釋' //將快取區的檔案提交到歷史庫中

後續會說下命令的原理請聽下回分解……

…………………………

編譯原理 入門總結

入門教程在 手把手教你做乙個 c 語言編譯器 19年嘗試學了一下,中途看不懂放棄了。20年底從頭再看一遍,經過一年的知識積累,在仔細研讀之下,終於算是學懂了。此文中記錄了我在最初學習時遇到的問題,和最終的解決方法記錄下來,希望對讀者有所幫助。虛擬機器涉及的知識是比較綜合性的,是乙個難點。虛擬機器的原...

鴿巢原理入門

下面有兩個入門題目 poj2356 題意 從n個數中選出幾個數的和是n的倍數。因為給定的是n個數,所以結論是一定存在。證明如下 用sum k 表示前k個數的和,假設不存在,那麼sum k n一定在1到 n 1 之間,其中k為 1 n 那麼它的餘數至少有兩個數是相等的。因為鴿巢原理n個蘋果放到n 1個...

Tomcat集群同步原理入門

隨著c s架構中,客戶端對伺服器的訪問量及訪問次數逐漸增多,單個伺服器已經不能夠滿足客戶端的請求了。於是現在大多數伺服器都做成了集群的形式。而伺服器集群會有乙個很大問題,就是同步問題。比如,現在我對乙個有四台計算機的集群進行訪問,這時假設根據負載均衡分配到了node1,如果我在node1上建立了乙個...