首頁 開發工具 Git git和svn實現的原理一樣嗎

git和svn實現的原理一樣嗎

Jan 07, 2022 am 11:04 AM
git

git和svn實現的原理是不一樣的;git是分散式的版本控制系統,svn不是,這是git和svn非分散式的版本控制系統最核心的區別,git把內容按元資料方式存儲,而svn是按文件方式存儲。

git和svn實現的原理一樣嗎

本文操作環境:Windows10系統、Git2.30.0版、Dell G3電腦。

git和svn實作的原理一樣嗎

Git是一個開源的分散式版本控制系統,用於敏捷高效地處理任何或小或大的項目。

 Git 是 Linus Torvalds 為了幫助管理 Linux 核心開發而開發的一個開放原始碼的版本控制軟體。

 Git 與常用的版本控制工具 CVS, Subversion 等人不同,它採用了分散式版本庫的方式,不必伺服器端軟體支援。

 一、Git 與 SVN 差異

 GIT不只是個版本控制系統,它也是個內容管理系統(CMS),工作管理系統等。

 如果你是個有使用SVN背景的人,你需要做一定的思想轉換,來適應GIT提供的一些概念和特徵。

 Git 與SVN 區別點:

  • 1、GIT是分散式的,SVN不是:這是GIT和其它非分散式的版本控制系統,例如SVN ,CVS等,最核心的區別。

  • 2、GIT把內容按元資料方式存儲,而SVN是按檔案:所有的資源控制系統都是把檔案的元資訊隱藏在一個類似.svn,.cvs等的資料夾裡。

  • 3、GIT分支和SVN的分支不同:分支在SVN中一點不特別,就是版本庫中的另外的一個目錄。

  • 4、GIT沒有一個全域的版本號,而SVN有:目前為止這是跟SVN相比GIT缺少的最大的一個特徵。

  • 5、GIT的內容完整性要優於SVN:GIT的內容儲存所使用的是SHA-1雜湊演算法。這能確保程式碼內容的完整性,確保在遇到磁碟故障和網路問題時降低對版本庫的破壞。

 二、Git原理:Git 工作區、暫存區與版本庫

 基本概念

 我們先來理解下Git 工作區、暫存區和版本庫概念

工作區:就是你在電腦裡能看到的目錄。

暫存區:英文叫stage, 或index。一般存放在 ".git目錄下" 下的index檔(.git/index)中,所以我們把暫存區有時也叫作索引(index)。

版本庫:工作區有一個隱藏目錄.git,這個不算工作區,而是Git的版本庫。

 下面這個圖展示了工作區、版本庫中的暫存區和版本庫之間的關係:

git和svn實現的原理一樣嗎

 圖中左邊為工作區,右側為版本庫。在版本庫中標記為 "index" 的區域是暫存區(stage, index),標記為 "master" 的是 master 分支所代表的目錄樹。

 圖中我們可以看出此時 "HEAD" 實際上是指向 master 分支的一個"遊標"。所以圖示的指令中出現 HEAD 的地方可以用 master 來取代。

 圖中的 objects 所識別的區域為 Git 的物件庫,實際位於 ".git/objects" 目錄下,內麵包含了所建立的各種物件及內容。

 當對工作區修改(或新增)的檔案執行"git add" 指令時,暫存區的目錄樹被更新,同時工作區修改(或新增)的檔案內容被寫入到物件庫中的一個新的物件中,而該物件的ID被記錄在暫存區的檔案索引中。

 當執行提交作業(git commit)時,暫存區的目錄樹寫到版本庫(物件庫)中,master 分支會做相對應的更新。即 master 所指向的目錄樹就是提交時暫存區的目錄樹。

 當執行 "git reset HEAD" 指令時,暫存區的目錄樹會被重寫,被 master 分支指向的目錄樹所替換,但是工作區不受影響。

 當執行 "git rm --cached " 指令時,會直接從暫存區刪除文件,工作區則不做出改變。

 當執行 "git checkout ." 或 "git checkout -- " 指令時,會用暫存區全部或指定的檔案取代工作區的檔案。這個操作很危險,會清除工作區中未加入暫存區的變更。

 當執行"git checkout HEAD ." 或"git checkout HEAD " 指令時,會用HEAD 所指向的master 分支中的全部或部分檔案取代暫存區和以及工作區中的文件。這個命令也是極具危險性的,因為不但會清除工作區中未提交的改動,也會清除暫存區中未提交的改動。

推薦學習:《Git教學

#

以上是git和svn實現的原理一樣嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

灰度數字大盤是什麼意思 灰度數字大盤是什麼意思 Jul 01, 2025 pm 05:57 PM

灰度數字大盤是指灰度投資旗下數字資產信託基金的整體表現,其核心包含單一資產信託和復合型基金。 1.“灰度”指Grayscale Investments,旗下有GBTC、ETHE等信託產品;2.“數字大盤”狹義指追踪主流加密資產的GDLC基金,廣義則涵蓋灰度所有信託產品整體表現。關注灰度數字大盤的原因包括:1.其持倉變化反映機構投資者對加密貨幣的配置傾向;2.信託產品的溢價或折價波動影響市場情緒;3.作為受SEC監管的合規通道,其動向具有政策參考價值。

Lightchain AI:額外獎勵輪次熱議及主網啟動即將到來 Lightchain AI:額外獎勵輪次熱議及主網啟動即將到來 Jul 02, 2025 pm 06:33 PM

LightchainAI當前正處在獎勵輪次階段,為投資者提供在2025年7月主網上線前最後獲取LCAI代幣的機會。平台至今已募集2110萬美元資金,其自主研發的AI虛擬機正在行業內引發高度關注。去中心化人工智能的發展勢頭愈發強勁,而LightchainAI憑藉其獨特的創新模式正在成為焦點。隨著主網啟動日期鎖定在2025年7月,目前平台開放的獎勵輪次成為投資者入場的重要窗口。我們一起來看看LightchainAI的核心亮點及其為何備受矚目。 LightchainAI:推動去中心化AI發展Lightc

Ripple、美國銀行與XRP:金融創新的新時代? Ripple、美國銀行與XRP:金融創新的新時代? Jul 04, 2025 pm 08:36 PM

Ripple正在通過申請國家銀行牌照,以及推動XRP在加密經濟中的新角色,重新定義金融行業的未來格局。掌握最新動態與深度觀察,把握趨勢先機。加密貨幣生態正處於高速演進之中,而Ripple及其數字資產XRP無疑站在風暴中心。尤其在美國銀行體系中所展開的一系列動作,正在引發廣泛關注。這一切的發展彷彿是一場現實中的金融劇集,正逐步揭開序幕! Ripple的銀行業宏圖大略Ripple首席執行官BradGarlinghouse已不再滿足於傳統金融科技的邊界。作為戰略升級的關鍵步驟,Ripple

代幣聚焦:XRP、Solana 與不斷變化的加密貨幣格局 代幣聚焦:XRP、Solana 與不斷變化的加密貨幣格局 Jul 02, 2025 pm 06:12 PM

深入解析XRP與Solana:探討其最新動態與市場地位,把握altcoin的發展趨勢。聚焦altcoin:XRP、Solana與加密生態的演進altcoin市場正迎來新一輪活躍期! XRP和Solana等主流代幣正在引發廣泛關注。本文將剖析它們的最新進展,為加密投資者提供有價值的參考信息。 XRP:法律前景明朗化提振市場信心XRP與其和美國證券交易委員會(SEC)之間的訴訟案接近尾聲,這一進展可能為機構資金入場打開大門。目前已有超過50家國際銀行及支付網絡將其納入結算系統,

什麼是git中的包裝文件? 什麼是git中的包裝文件? Jul 08, 2025 am 12:14 AM

Packfile是Git用來打包、壓縮和傳輸版本庫對象的高效機制。當你執行gitpush、gitfetch或gitclone時,Git實際傳輸的就是packfile;1.它最初由鬆散對象通過gitgc或gitrepack命令生成,存於.git/objects/pack/目錄;2.Packfile不僅包含對像數據,還記錄對象間的差異(delta)關係,並配合索引文件(.idx)實現快速查找;3.這種設計減少了傳輸體積,提高了同步效率;4.大量小packfile可能影響性能,可通過gitgc或git

我如何查看我的git存儲庫的提交歷史? 我如何查看我的git存儲庫的提交歷史? Jul 13, 2025 am 12:07 AM

要查看Git提交歷史,使用gitlog命令。 1.基本用法為gitlog,可顯示提交哈希、作者、日期和提交信息;2.使用gitlog--oneline獲取簡潔視圖;3.通過--author和--grep按作者或提交信息過濾;4.添加-p查看代碼變更,--stat查看變更統計;5.使用--graph和--all查看分支歷史,或借助GitKraken、VSCode等可視化工具。

2025年最值得投資的5大穩定幣(附最新數據) 2025年最值得投資的5大穩定幣(附最新數據) Jul 09, 2025 am 06:06 AM

2025年最具投資價值的五大穩定幣為Tether(USDT)、USD Coin(USDC)、Dai(DAI)、First Digital USD(FDUSD)和TrueUSD(TUSD)。

如何刪除git分支? 如何刪除git分支? Jul 13, 2025 am 12:02 AM

要刪除Git分支,首先確保已合併或無需保留,使用gitbranch-d刪除本地已合併分支,若需強制刪除未合併分支則用-D參數。遠程分支刪除使用gitpushorigin--deletebranch-name命令,並可通過gitfetch--prune同步他人本地倉庫。 1.刪除本地分支需確認是否已合併;2.遠程分支刪除需使用--delete參數;3.刪除後應驗證分支是否成功移除;4.與團隊溝通避免誤刪共享分支;5.定期清理無用分支以保持倉庫整潔。

See all articles