2010-11-12 63 views
0

可能重複:
Why is Git better than Subversion?爲什麼這麼多開源項目從SVN轉移到git?

我跟許多不同的開源項目,主要圍繞Java技術,但這個問題可能是普遍的。我注意到在過去6個月左右,很多項目正在從顛覆轉向git。

我的問題是爲什麼? git對顛覆有什麼好處,這些優點是否適合商業世界(即我應該用git來替換我的cvs和svn倉庫)?

+2

http:// stackoverflow可能存在重複。com/questions/871/why-is-git-sub-subversion – cdhowie 2010-11-12 21:31:50

+0

由於SVN很糟糕? – 2010-11-12 22:08:51

+0

項目正在從SVN轉移到* git *,而不是* github *,儘管他們當然可以使用github作爲其託管。編輯的問題反映了這一點。 – Cascabel 2010-11-12 22:47:37

回答

3

來吧,你檢查了誰寫的git? Linus Torvalds本人!

現在嚴重的是,我認爲主要有3到使用git的幾大理由:

1)克隆模式:使用Subversion,你執行「結賬」,這是,其實只是一個快照在特定的時間內儲存。每個其他操作(提交,分支,檢查日誌,與以前的版本比較)都需要網絡訪問原始存儲庫。使用git有效地將整個存儲庫「克隆」到本地計算機,允許您執行一系列本地提交,回滾,瀏覽歷史記錄等,而無需再次彙集服務器。對於大多數開源開發人員來說,這是一件好事。 2)分叉模型:在Subversion的日子裏,創建一個項目的分支就是這樣一個災難性的事件。通常意味着,在幾個月內,其中一個項目將會死亡。有了git(並且Github在這方面提供了很多幫助),叉子既簡單又健康,開發人員可以通過兩種方式合併更改,並且給定項目的許多分支可以共存。 3)部分提交:並不是很多人使用它,但是您可以選擇只提交更改文件的一部分(使用git add -p)。它節省了很多時間在微妙的情況下。

當然,爲什麼git(或一般DVCS)比Subversion好得多,但對我來說,這3個就是殺手。

1

因爲很多程序員認爲分佈式源代碼控制管理系統(比如GIT)要優於需要集中服務器的系統。

+0

這與分散化沒有多大關係,而是權力下放和權力分散。如果您意識到自己犯了一個錯誤(在提交之前),則可以重寫歷史記錄,您可以在本地進行分支和合並,而無需遠程服務器知道任何事情等等。 – cdhowie 2010-11-12 21:33:06

1

有幾個原因

  • 的Git,作爲一個分佈式系統,被認爲是更好的。

  • 你不需要讀寫權限和git-world中的管理麻煩。

  • 對項目的貢獻比較容易。

  • Git最終會讓您更好地控制主存儲庫中的內容,以及哪些不是。

大多數酷酷的優勢可以傳播到我認爲的商業世界。但是如果你想進行這個轉變,開始會變得很慢。

1

嗨,請不要錯過github和git之間的區別。

Github只是免費的git服務器。

爲什麼github? - 因爲您只需點擊鼠標即可輕鬆分叉和合並項目。

這對我給予的商業價值: - 任何人都可以做一些工作,我的項目,問我他的合併變化,不需要特殊的知識,請求歷史容易看到... - 通過觀看項目的變化使用一個帳戶爲他們所有人 - 您也可以關閉存儲庫不公開(有些費用)。 - 可能還有更多,只是訪問github

什麼git本身給予請看其他人的迴應。

1

坦率地說,我不知道。我發現git有一個模糊的命令語法,並且通常很煩人,而且很難使用。 git速度很快,但其他DVCS也同樣快。我認爲總體而言,有比git更好的DVCS,我認爲使用更合理。

現在,爲什麼人們從Subversion轉向DVCS是一個顯而易見的問題。分佈式版本控制系統在各方面都更好。

在Subversion中,我無法檢查出所有事情,做出自己的本地更改並檢查它們。我必須經歷扭曲,例如定期複製事務到供應商分支,併合並或其他荒謬的事情。

這有很多好處。成爲貢獻者的障礙變得更低。該項目變得更容易有用叉。跟蹤項目維護人員不想要的更改,但是您的操作變得更容易。

此外,當您在筆記本電腦上檢查項目時,您的USB存儲棒和您的系統在工作時,現在有一個明確且合乎邏輯的方式來允許檢查所有這些地點,而不考慮互聯網連接並且能夠加入所有稍後再備份。

它還可以爲整個源代碼庫及其所有歷史記錄提供出色的分佈式備份。 DVCS存儲庫幾乎不可能失去重要的歷史記錄,因爲存在如此多的副本。

有些人認爲Subversion的「中央控制」是一件好事。但是,真的,你根本沒有任何控制權。你所做的只是讓那些不屬於你決定爲提交者的神聖組織的人變得非常不方便。所有這些人都可以製作自己的源代碼副本,甚至整個歷史。我經常將項目的整個Subversion歷史記錄拖入DVCS中,以便處理它。

一個使用DVCS的項目擁有一個權威的存儲庫,與「集中控制」的Subversion存儲庫一樣具有權威性。分佈式模型是集中模型的嚴格超集。

1

這是因爲GIT使分支和合並無縫。我沒有聽說SVN有關分支和合並的任何讚揚。 GIT爲您提供了完全自由的自己的提交,以及您想要推送到公共存儲庫的內容。