Git 簡介 誕生 集中式分布式 安裝 建立版本庫

2021-07-23 00:15:48 字數 2483 閱讀 8681

因為經常去逛github。。看到有些人經常會把自己的專案、平常的**都推送上去。。然後覺得自己也應該養成這種習慣,**只放在電腦裡也的確不方便。。以後做專案的話也會用到git的,所以就打算用這幾天學一下,借了一本書《git版本控制管理》,奈何因為沒有一點基礎所以感覺特別深奧有些看不懂,所以先準備看一下廖雪峰的git教程,以後看需要再學更深層次的吧。。

git,目前世界上最先進的分布式版本控制系統(分布的話,後面講~)

所以,什麼是版本控制系統呢?

在網上看過乙個段子,是說畢業生在寫畢業**時,經常會改了又改,快上交的時候乙個資料夾裡往往存著《畢業**》《畢業**改版》《畢業**最終版》《畢業**最最終版》《畢業**再也不改版》。。。。在寫這個**的時候,我們修改了一些,儲存了,後來又想回到修改之前的樣子了,卻發現已經忘了**改過**沒改過了。。

而且,如果你找了乙個朋友幫你改**,同時你也在改,改來改去你們倆的已經完全融合不到一起怎麼辦?是不是很麻煩?所以,我們需要乙個軟體,它可以記錄下每次檔案的改動,還可以讓你和朋友一起修改,這樣,豈不是很方便?

雪峰老師做了如下例子:

這樣的話是不是很方便?想看每次改動的話看一眼就行。。

這樣~版本控制系統就來解救你啦~

關於版本控制的優點在以後的學習中會更加清晰。

看廖雪峰教程這一塊的時候簡直給linus獻上膝蓋啊。。

linus建立了linux,後來世界各地的志願者參與開發,在世界各地為linux編寫**,所以**的管理是個很大的問題,所以linus選擇了乙個商業的版本控制系統bitkeeper,bitkeeper的東家bitmover公司出於人道主義精神,授權linux社群免費使用這個版本控制系統。

後來啊,重點就來了,開發samba的andrew試圖破解bitkeeper的協議,被bitmover公司發現了,於是bitmover公司怒了,要收回linux社群的免費使用權。

然後,linus花了兩周時間自己用c寫了乙個分布式版本控制系統,就是git。。我想說,真的好厲害。。

其實當時還有其他的版本控制系統比如說cvs、svn,但他們都是集中式版本控制系統,而linus所寫的git則是乙個分布式版本控制系統,那麼,這兩者又有什麼區別呢?

集中式版本控制系統有乙個單一的集中管理的伺服器,儲存所有檔案的修訂版本,而所有的工作人員都通過各自的客戶端連線到這台伺服器,取出最新的檔案或者提交更新。

在分布式版本控制系統中,客戶端並不是只提取最新版本檔案的快照,而是把**倉庫完整的映象下來,這樣的話,任何一處工作用的伺服器發生故障,事後都可以用任何乙個映象出來的本地倉庫恢復。其實,每一次提取操作都是一次對**倉庫的完整備份。

我是在rhel7裡安裝的。

乙個命令就ok了。

這樣就可以了。

版本庫(repository),這就相當於乙個倉庫,我們可以通過git管理這個目錄裡的所有檔案,記錄每個檔案的建立,修改,刪除。

首先,我們先來建立乙個目錄

[tonglele@localhost ~]$ mkdir gitrepo

[tonglele@localhost ~]$ cd gitrepo/

[tonglele@localhost gitrepo]$ ls

[tonglele@localhost gitrepo]$ pwd

/home/tonglele/gitrepo

然後,通過 git init把這個目錄初始化為git可以管理的倉庫

[tonglele@localhost gitrepo]$ git init

initialized empty git repository in /home/tonglele/gitrepo/.git/

此時,乙個空的版本庫就建立好了,我們可以看到這個目錄下多出了乙個.git目錄,這裡面就是git為這個版本庫所建立的一系列記錄檔案,一般不要修改。

[tonglele@localhost gitrepo]$ ls -a

. .. .git

[tonglele@localhost gitrepo]$ cd .git

[tonglele@localhost .git]$ ls

branches config description head hooks info objects refs

Git 集中式VS分布式

集中式版本控制系統 版本庫是集中存放在 伺服器的,而幹活的時候用的是自己電腦,所以要先從 伺服器取得最新版本,然後開始幹活,幹完再把自己的 活推送給 伺服器。集中式版本控制系統最大的毛病就是必須聯網才能工作。分布式版本控制系統 首先,分布式版本控制系統根本沒有 伺服器 每個人的電腦上都是乙個完整的版...

集中式vs分布式

linus一直痛恨的cvs及svn都是集中式的版本控制系統,而git是分布式版本控制系統,集中式和分布式版本控制系統有什麼區別呢?先說集中式版本控制系統,版本庫是集中存放在 伺服器的,而幹活的時候,用的都是自己的電腦,所以要先從 伺服器取得最新的版本,然後開始幹活,幹完活了,再把自己的活推送給 伺服...

Git學習 集中式與分布式

集中式版本控制系統 版本庫是集中存放在 伺服器的,自己的電腦先從 伺服器取得最新的版本,然後開始幹活,幹完活了,再把自己的活推送給 伺服器。舉個例子 伺服器就好比是乙個圖書館,你要改一本書,必須先從圖書館借出來,然後回到家自己改,改完了,再放回圖書館。缺點 必須聯網才能工作,如果在區域網內還好,頻寬...