1、Git的簡介與優(yōu)缺點(diǎn)什么是git? Git是目前世界使用最廣泛的分布式版本控制系統(tǒng),它是由林納斯·托瓦茲(Linus Torvalds)創(chuàng)作,最初的目的是為了更好地管理Linux內(nèi)核開發(fā)而設(shè)計的。 與svn對比優(yōu)缺點(diǎn)? 1、與svn對比最核心區(qū)別就是Git是分布式,而svn是非分布式。這主要表現(xiàn)在使用Git時每一個開發(fā)人員電腦本地上存在一個Local Repository,這個Local Repository包含著遠(yuǎn)程庫中的所有文件,因此,即使在沒網(wǎng)的時候也可以進(jìn)行commit提交,查看歷史版本記錄,創(chuàng)建項目分支等操作,等網(wǎng)絡(luò)再次連接上Push到Server端。 2、Git把內(nèi)容按元數(shù)據(jù)方式存儲,而SVN是按文件方式存儲。表現(xiàn)為.git文件與.svn文件大小區(qū)別很大 3、SVN存在一個自增的全局版本號;而Git每次提交,通過對文件的內(nèi)容或目錄的結(jié)構(gòu)計算出一個SHA-1 哈希值,得到一個40位的十六進(jìn)制字符串,以此來作為版本號。 4、Git的內(nèi)容的完整性要優(yōu)于SVN:Git的內(nèi)容存儲使用的是SHA-1哈希算法。Linux kernel開創(chuàng)者和Git的開發(fā)者——Linus說,Git使用了SHA-1并非是為了安全性,而是為了數(shù)據(jù)的完整性;它可以保證,在很多年后,你重新checkout某個commit時,一定是它多年前的當(dāng)時的狀態(tài),完全一摸一樣,完全值得信任。 5、Git下載下來后,在OffLine狀態(tài)下可以看到所有的Log,SVN不可以。 6、SVN必須先Update才能Commit,忘記合并時就會出現(xiàn)一些錯誤,git還是比較少的出現(xiàn)這種情況。 7、克隆一個新項目,Git只需克隆master分支;svn則需要復(fù)制所有的版本。Git省時。 8、 版本庫(repository):SVN只能有一個指定中央版本庫。當(dāng)這個中央版本庫有問題時,所有工作成員都一起癱瘓直到版本庫維修完畢或者新的版本庫設(shè)立完成。而 Git可以有無限個版本庫?;蛘撸_的說法,每一個Git都是一個版本庫,區(qū)別是它們是否擁有活躍目錄(Git Working Tree)。如果主要版本庫(例如:置於GitHub的版本庫)發(fā)生了什麼事,工作成員仍然可以在自己的本地版本庫(local repository)提交,等待主要版本庫恢復(fù)即可。工作成員也可以提交到其他的版本庫! 9、SVN創(chuàng)建分支會影響其他人;Git則可以在本地創(chuàng)建任意分支,只要我不合并及提交到主要版本庫,則不會影響任何人。
10、提交(Commit)在SVN,當(dāng)你提交你的完成品時,它將直接記錄到中央版本庫。當(dāng)你發(fā)現(xiàn)你的完成品存在嚴(yán)重問題時,你已經(jīng)無法阻止事情的發(fā)生了。如果網(wǎng)路中斷,你根本沒辦法提交!而Git的提交完全屬於本地版本庫的活動。而你只需“推”(git push)到主要版本庫即可。Git的“推”其實是在執(zhí)行“同步”(Sync)。
11、模式上會比SVN相對較復(fù)雜
2、Git的安裝安裝環(huán)境:Linux CentOS7 我直接使用yum安裝,直接在linux中執(zhí)行下面兩行命令 yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel //安裝依賴 yum install git //安裝Git 也可以直接運(yùn)行yum intall git yum會自動安裝軟件依賴 這樣子Git環(huán)境就安裝好了,接下老就是權(quán)限設(shè)置,哪些人可以訪問這個Git服務(wù)器呢?
3、用戶訪問設(shè)置3.1、秘鑰登陸類型1、首先創(chuàng)建一個用戶組以及用戶 1 groupadd git //創(chuàng)建git用戶組 2 useradd git -g git //創(chuàng)建git用戶,用來運(yùn)行g(shù)it服務(wù) 2、收集所需登陸用戶的公鑰,并將公鑰導(dǎo)入到/home/git/.ssh/authorized_keys文件里,一行一個?! ?/p> Linux中的公鑰在每個用戶的home目錄下(/home/用戶/.ssh),沒有則使用命令進(jìn)行創(chuàng)建:ssh-keygen -t rsa Windowns中的公鑰創(chuàng)建: 使用git,打開Git Bash。 進(jìn)入git家目錄,將收集的公鑰(id_rsa.pub里面的內(nèi)容),添加到authorized_keys文件中(一行一個)。 沒有authorized_keys文件則創(chuàng)建: cd /home/git/
mkdir .ssh
chmod 700 .ssh
vim .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
注意:.ssh 目錄必須是700權(quán)限、authorized_keys文件必須是600權(quán)限 3.2、密碼登陸類型1、創(chuàng)建登陸用戶并添加到git用戶組中 useradd -M git1 //-M 表示不創(chuàng)建家目錄 useradd -M git2 passwd git1 //設(shè)置密碼 passwd git2 usermod -G git git1 //將新建的兩個用戶添加到git組中 usermod -G git git2 2、禁止新創(chuàng)建的用戶ssh登陸linux服務(wù)器 which git-shell //查看git-shell所在路徑 (我的是:/usr/bin/git-shell) vim /etc/passwd //將用戶名稱:x:1000:1000::/home/用戶名稱:/bin/bash 將/bin/bash替換為git-shell所在路徑 注意: 創(chuàng)建用戶的時候加-M,主要目的是不在home目錄下生成該用戶的擁有讀寫權(quán)限的家目錄。這是因為我們創(chuàng)建的這些用戶是用于git服務(wù)上面,并不想給用戶除了git訪問以外其他的權(quán)限;同理,需禁止用戶通過ssh登陸linux服務(wù)器。
4、初始化git服務(wù)器我們就選取git目錄作為git的倉庫 chmod g-w /home/git //這個是必要的 cd /home/git //進(jìn)入git家目錄 git init --bare test.git //創(chuàng)建一個空倉庫,服務(wù)器上的Git倉庫通常都以.git結(jié)尾 chown -R git:git test.git/ //設(shè)置權(quán)限,因為我使用root來創(chuàng)建這個空倉庫,因此需要變相應(yīng)的權(quán)限設(shè)置 chmod -R 775 test.git/ //設(shè)置所屬組的所有權(quán)限,否則秘鑰類型push不成功 注意:變更文件的所有者以及組權(quán)限非常重要,切記。 5、克隆倉庫git clone git@git_ip:/home/gitrepo/runoob.git //git_ip為Git所在服務(wù)器ip ,需要將其修改為你自己的 Git 服務(wù)ip。
6、參考資料1. 《話說Svn與Git的區(qū)別(以后別再問我了)》
(以上是自己的一些見解,若有不足或者錯誤的地方請各位指出) 作者:那一葉隨風(fēng) http://www.cnblogs.com/phpstudy2015-6/ 原文地址:https://www.cnblogs.com/phpstudy2015-6/p/9153497.html 聲明:本博客文章為原創(chuàng),只代表本人在工作學(xué)習(xí)中某一時間內(nèi)總結(jié)的觀點(diǎn)或結(jié)論。轉(zhuǎn)載時請在文章頁面明顯位置給出原文鏈接 |
|