2011-07-04 54 views
11

在我看來,Git是爲大規模開源項目設計的,擁有大量開發人員和團隊。使用Git對小型內部團隊有意義嗎?

我想知道Git是否適合小團隊(< 10)和內部項目(在組織內部)。我明白,擁有本地存儲庫副本會有明顯的性能優勢(儘管當您的組織存儲在您的組織內時,這並不重要)。

你還會推薦Git(以及它附帶的複雜性),爲什麼?

+1

請提高您的回答率。 –

+0

可能的重複http://stackoverflow.com/questions/250984/do-i-really-need-version-control – Flimzy

+0

@Flimzy:我不會這麼說,因爲Git真的很具體。 「我應該使用Git進行小型團隊項目」和「我應該使用版本控制」是不同的問題。 –

回答

16

Git並不是那麼複雜。它非常強大和精確。我不會使用其他任何東西,一個人項目或一個100,000人項目。我真心的。

我明白了爲什麼人們說這是複雜的,但整個事情被高估。要做你需要做的一切,最多可能需要10個命令。而且你不需要了解這10種食譜的每一種選擇......只是一些食譜式的「食譜」。

做什麼需要明白的是一些關於Git是如何不同下引擎罩。但這並不是因爲git很複雜 - 這是因爲Git是不同的。你可以花一些時間在一兩天的時間內挖掘這些信息,你就會很開心。

請原諒我的粗魯,但Git使文件系統成爲它的b * tch。您可以隨意在軟件項目的「備用現實」之間切換。一旦你瞭解了工具的來源,你就可以完全控制構成軟件的位和字符。對於軟件開發人員來說,很少有這種能力的工具可用。

是的,夥計,我推薦Git。做到這一點。你會很高興你做到了。祝你好運。

1

這很簡單:它做它應該做的很漂亮:版本控制。

沒有更多,沒有更少。

它適用於我的IDE,它完美地合併了組編輯,並且可以隨時提取舊代碼。

1

是的,因爲與svn相比,更改跟蹤如何工作。 (在大型多步合併中,衝突較少)

是的,因爲您可以在工作時進行小型本地提交,然後將完整的工作更改推送到主存儲庫。當你進行推送時,你所有的小提交都被推送了。

是的,因爲當你從主存儲庫執行pull時,它不會立即合併,而是將分支中的東西放入。當你做了更大的改變,並希望在某些計算機上延遲某些日子的更新時,它非常適合。

1

我更喜歡git over svn for single person projects。 在整個生產線上使用相同的工具更容易,並且爲了保持git和svn存儲庫對我來說似乎毫無結果。

1

我會說是的。

即使是我自己,我傾向於使用git,因爲它是有用的功能。除了兩次操作(推拉)之外,不必爲網絡(甚至是內部網絡)打網絡,從長遠來看節省了大量時間。諸如查閱不同分支的事情只是在本地發生,就像閱讀日誌一樣。

請注意,即使在分發git時,您仍然可以擁有每個人都在推送和從中拉出的中央存儲庫。但它只是按照慣例的一箇中央存儲庫。

而廉價創建分支機構也是一個優勢。您可以輕鬆製作主題分支,並在其中實施一些小功能,然後再在開發分支中進行合併。

見一個成功的分支策略git flow

4

我使用的Git爲我自己跑(團隊規模= 1)和項目有5名成員另一個項目。

爲什麼我個人喜歡它的原因:

  • 無痛branching and merging;
  • 設置several repositories積累不同種類的變化(對web項目有用); (從來沒有想過如何連接);
  • 一旦你習慣了承諾一直推好的工作流程,你不能真的回頭。

一個聰明的團隊好處甚至更​​加明顯:

  • 一個可以,而不必擔心以後解決衝突100幾周分支工作;
  • 分佈式工作流程更有意義,並且將代碼審查集成到您的流程中。

然而如果你的團隊是啞巴(可能有時真)或偏見對Git的,我強烈建議反對它,因爲它花費一定的精力和程序員的好奇心,學習,而不是每個人都在世界希望分支,合併,使用分佈式工作流程或Git所提供的任何其他功能。

5

Git對大型和小型團隊都有意義。是的,git很複雜,但這並不意味着你總是必須處理這種複雜性。我使用git每天,我很少發出比其他任何東西:

git branch # To remind myself what features I'm working on. 
git checkout <name_of_branch> # To switch to whatever I want to work on. 
git checkout -b <name_of_new_feature> # To start work on a new branch 
git add <name_of_file> # To add it to the list of tracked files. 
git commit -m <commit_message> # To checkpoint my work. 
git merge <name_of_branch> # To integrate changes back to trunk. 
git branch -d <name_of_branch> # To delete a branch after it has been merged. 

其實只有你需要記住每天的基礎上了少數命令。對於比這更復雜的任何事情,你總是可以在文檔中查找它。

我真正喜歡git的一件事,爲什麼我強烈推薦使用它,即使它尚未準備好提交到存儲庫,您仍然可以保持工作點檢查和版本控制。例如,在實際向其他開發人員展示之前,我可能會在本地多次使用「git commit」。這大大增加了我對更改代碼的信心;我可以試驗,不用擔心我目前的工作將會丟失 - 如果出現問題,我總是可以恢復到安全版本。例如,SVN就不能這麼說,在主存儲庫中可以看到任何提交。

+1

+1表格。 –

+0

「致力於存儲庫」是什麼意思?如果Git沒有中央存儲庫,那麼您在說什麼存儲庫? Git令人困惑。 –

+1

@BrunoSantos儘管是分佈式的,但項目或組織往往會有一個反映代碼真實,官方狀態的單一存儲庫。無論如何,當我說「致力於存儲庫」時,我的意思是 - 你可以在不用將這些改變推送到遠程存儲庫(無論是官方存儲庫還是其他遠程存儲庫)的情況下進行本地提交),而在其他版本控制機制中,您必須使用單獨的工具來處理更改的本地版本控制。 –