web-dev-qa-db-ja.com

なぜGitはそんなに誇大宣伝をしたのですか? ...一方、他の人はしませんか?

近年、Gitをめぐる誇大宣伝が大幅に高まりました。誰もがGitについて知っていますが、代替案については誰も知りません。

Mercurialのような他のものは見過ごされているようです。どちらも2005年にリリースされ、同様の機能を提供します。さらに、Mercurialは一般的に使いやすく、直感的で、長い間UIが優れていたと考えられています。したがって、これは、特に分散バージョン管理の初心者にとっては、一般的な代替手段になると想定できます。しかし、かなり成功したGitとは異なり、ほとんどの人にとっては不明なようです。

この投稿の目的は、この現象をよりよく理解しようとすることです。

Gitがケーキのすべての部分を取得するのはなぜですか?彼らはどういうわけかより良いマーケティングを使用しましたか?それは、そのコミュニティがより多くの... ahem ... "verbose"であるためですか? 「ライナス」の名前のせいですか?オタクっぽいイメージのせい?

あなたの意見は何ですか?

127
dagnelies

GitHub または Gitorious のようなサービスが大きな要因だと思います。どこかでコンテンツをホストできることが重要です。特にGitHubはそのための優れたサービスです。

Mercurialの場合、DVCSが普及したときにはそのようなサービスはありませんでした(少なくとも、私が気付いていたサービスはありませんでした)。あなたは Bitbucket を現在そしておそらく他にも持っていますが、GitHubはかなり前からそこにありました、それはよく知られていて、どんどん良くなっています。

87
deadsven

私はこれに対する多くの答えが、どちらか一方のSCMについて聞いたときに著者が持っていた感情に依存していると思います。他の人はそれがすべて運が良かったと言います。運は歴史にさかのぼることができると思います。

歴史についてお話します。

GitMercurialは、同じ問題を解決するために同時に作成されました。当時、LinuxカーネルはBitKeeperの使用を強制的に停止されていました。これは、3年間使用していた独自の分散SCMです。その理由は、BitKeeperの背後にある会社であるBitMoverのCEOであるLarry McVoyが、Linuxコミュニティ内の誰かがリバースエンジニアリングを行ったため、無料でLinux開発者にソフトウェアを提供することをやめたからです。

Linus Torvaldsは、すでに存在しているものに不満を抱いていたため、まもなくGitと呼ばれる新しいSCMに取り組み始めました。その後すぐに、Matt Mackallは同様の理由でMercurialプロジェクトを開始しました。

これらのプロジェクトを個別に開発してしばらく経った後、Matt MackallはSCMの高度なバージョンを発表し、Git(それ自体はほんの数週間前のバージョン)と比較して、一定の方法でベンチマークしました。 Linusはカーネル開発のためにGitの代わりにそれを使用することを検討しましたが、 Mercurialが変更セットをログに記録するためにチェンジセットを使用していた であることに気付いたとき、その考えを捨てました彼は、それがBitKeeperの動作に近すぎることを恐れており、誰かに「BitKeeperクローンを作成した」と言わせるようなことは望んでいませんでした。

したがって、GercurはMercurialではなくカーネル開発に使用されましたが、どちらも技術的に適切でした。最終的には、Gitは実際に使用されるように設計された場所で使用されることから始まりましたが、Mercurialは最初の大きなFOSSの使用を見つけるのにそれほど速くありませんでした。非常に優れたデザインに恵まれており、マットマッカルの忍耐のおかげで、最終的には有名になり、実際の大規模なプロジェクトに使用されるようになりました。

今日、彼らは両方とも有名です。どれが最も有名かは言えません。 Google Codeは最近、Gitのみを統合しましたが、Mercurialは長い間ありました。多くの本当に大きくて有名なプロジェクトがどちらかを使用しています。

あなたがプロジェクトを始めたまさにその理由が消えるとき、私が意味することは私が意味することを推測することは人気を得るのがより困難ですが、それでもまだ可能です。

Bazaarは、GNU=世界で非常に有名ですが、それ以外ではそれほど多くありません。 GNUコミュニティを満足させることを意図して構築されています。ソフトウェアは多くの場合、作成者が行きたいところに行き、それ以上は行きません。

一方、分散SCMは明らかに勝者です。広く使われている非分散型SCMはあまり見かけません。

86
Thaddee Tyl

Linus Torvalds

LinusはGitの大きな擁護者であり、何年もの間それをコアLinuxグループに大きく宣伝し、そこから成長しています。それはあえて、* nixコミュニティに対するLinusの影響によるものです。

個人的にはまだSubversionを使用していますが、それは実用性というよりは好みによるものです。

77
Justin Shield

バージョン管理システムの通常の問題は、ブランチのマージです。

あなたはそれがしないときそれがどれほど苦痛であり得るか、そしてそれが機能することの重要性を理解するために機能しないときにそれを試す必要がありますブランチを自由に使っています。

Linus Torvaldsがこれを正しく行うためにgitを書いたこと、そしてある状況で彼がgitを使用してtwelveブランチを一度にマージしたことを知って、これはaですgitが興味深いものであるという非常に説得力のある議論。

私は約1年前にhgとgitのどちらかを選択しなければならない状況にあり、上記のマージはgitを選択する際の1つの重要な要素でした。 2つ目は、Eclipse組織がgitに切り替わったことで、EclipseツールはJavaプロジェクトに適していると期待されていました。Eclipse3.7のリリースでこれが起こりました。おそらく6〜9か月でした。この早い段階で。

さまざまなニーズに対して、hgも同様に役立ちます。 Sunはveryの慎重な調査に基づいてVCSにそれを選択しました。ホワイトペーパーを見つけて、その理由を確認することをお勧めします。


編集:注、私はMercurialができないことを言っているのではなく、Javaが私たちの主な焦点です-Windowsでも現在、市場勢力はgitに対して最も強力です、私たちは他の人の足ではなく肩に立つ必要があります。

34
user1249

なぜgitまたはMercurialの方が優れているのか、その唯一の理由が人気であるのではなく、コミュニティに焦点を当てます。

以前 強調表示したように 、Gitコミュニティは非常に騒々しく傲慢です。ほとんどの人は彼らの貴重なプログラムを精力的に守ります。私が見たGit対Mercurial戦争のほとんどは、地球上の誰もが聖なるgitを使用していないのかと疑問に思っているgitの人々によって開始されました。 whygitisbetterthanx.com のようなサイトは、序文にこの傲慢さを示しています。

誰もがそうであると言っているわけではありませんが、Gitの人々、Pro-GitのWebサイト、Pro-Gitのブログに出会ったときは、ほとんどの場合、Gitは実行可能なDVCSとして提供されるのではなく、喉に押し付けられているように感じましたシステム。


対照的に、他のDVCSコミュニティはそれほど騒々しくありません。 Mercurialが存在することを「最高のDVCSとは何か」を見るまで知りませんでした。 SOに関する質問。 Gitはどこにでも表示されますが、他のDVCSは見つけるのに時間がかかります。

23
TheLQ

Mercurialは特に目立たないと思います。 KilnはHgに基づいて構築されており、EclipseやNetbeansなどのIDEでしばらくサポートされています。

私が話すほとんどの開発者は、Windowsのサポートが優れているため、Hgを好むようです。私たちがLinux開発者であれば、それは別の話かもしれません。

また、本当の「忘れられたDVCS」である「Bazaar」もありません。

確かに、Linusは非常にカリスマ的な男であり、アルファオタクはほとんど同等ではないので、多くの人々がGitに引き寄せられることには同意します。また、Gitの「作成の神話」は、Ginを作成するために6日間労力を費やし、7日目に休む-またはそのようなもので、非常に説得力があります。製品に印象に残るストーリーがあると、注目を集めやすくなります。

14
mcottle

控えめな意見ですが、2つのパラメーターがあるため、Gitはこれらすべての誇大広告を得る可能性があります。

  1. それは非常に効率的です
  2. 使用するのは楽しいです(ある種の非常に特殊なコンピュータサイエンティストの方法で)

さらに、gitにはgithubのようなキラーアプリがいくつかあり、非常に人気のあるいくつかのプロジェクトがそれを使用することにしました。

13
Thibault J

それは主に自己強化型の誇大広告です。 Gitは最も人気があるため、最も知名度が高くなり、Gitの人気が高まります。

Git、Hg、およびBzrはすべて完全に優れたDVCSシステムですが、恐ろしい数の人々がDVCSをGitと同等と見なしており、DVCSのすべての美しい機能はGitに固有のものであると考えています。そして、彼らはGitを使用し、Gitを推奨し、「タコのマージを実行できるため、Gitの方が良い」(Bazaarもできる)、または「Gitは分散されているので、より良い」(=anyDVCS、したがって名前)、または「Gitの方が分岐とマージが簡単になるので良い」(これもすべてのDVCSに当てはまります)。

悲しいことに、私は代替案も提供するものはたくさんあると感じており、単にDVCS == Gitだと思っているからというよりも、その独特の強みのために人々がGitを選択したいのです。

誰かが1つの特定のDVCSをポイントすることでDVCSがどれほど賢いかを発見したとき、彼らは多くの場合、「DVCSは素晴らしいです。使用する必要があります」ではなく、「DVCS[〜#〜] i [〜#〜]DVCSについて学んだことは素晴らしく、使用する必要があります。 ".

12
jalf

ここには、「ベータオタクメディア」、「今が正しい」、「リーダーに従う」の3つの要素があります。

Beta Geek Media

「マニアックなアクティビティ」について話し合うチャンネルはたくさんあります。それらは確かに新しいバージョン管理システムの外観をカバーしますが、gitをさらにカバーします。どうして? Linus Torvaldsが最初にそれを書いたので、それについて公に議論し、それを彼のよく知られたビットキーパーに関する問題の解決策として使用しました。事実上、lkmlに炎上戦争が発生するたびに、ベータオタクメディアはそれに関する記事を書きます。 Gitのディスカッションはlkmlで始まったため、他の選択肢よりも多くの報道を得ました。そして、スラッシュドットをVarietyのように読むベータオタクはそれを食べました。その最終的な結果は、gitにはMercurialの10倍の数の記事があるということです。

時は正しい

多数の寄稿者がいる大きなオープンソースプロジェクトでは、一元的なソース管理に問題があります。オープンソースが成長し、プロジェクトに多くの貢献者がいる可能性が高くなるにつれて、問題はさらに悪化します。 Linuxはおそらくこれに苦しんでいる最もよく知られているプロジェクトですが、他にもたくさんあります。多くのプロジェクトがこの時点に達しているため、ある種の高度なVCSが必要でした。 Git、Mercurial、Bazaarがここで大きな勝者となりました。 ArchとMonotoneは少し早すぎたため、誇大広告の波を逃しました。

リーダーに従う

大きなプロジェクトには、たとえ貢献しなくても、定期的にコードをチェックアウトしてビルドするフォロワーがいます。フォロワーは、自分がフォローしているプロジェクトを取得するために必要なツールに慣れるので、それらのツールをさらに活用できます。大きな3つのDVCSの「ビッグドロー」プロジェクトを見てみましょう。

  • Git:Linux、Perl、jQuery、Ruby on Rails、Eclipse、Gnome、KDE、QT、X
  • Mercurial:Java、Mozilla、Python
  • バザール:Ubuntu、Emacs

Gitにはそれを使用する「大作戦」プロジェクトが多く、したがって、より多くの人々がgitに精通しており、より多くのgitチュートリアルが書かれています。

12
Sean McMillan

Github。 Githubはソーシャルコーディングのパイオニアです。これはバージョン管理をソーシャルプラットフォームに変え、多くの注目を集めました。明らかにGitのみをサポートしています。ソーシャルメディア=採用の拡大。 Bitbucketは多くの新機能を得ながらSteamを獲得しており、ライバルになりそうです:)

11
DelvarWorld

まあ実際には、誇大広告はすべてのDSVCを一緒にすることだと思います。

しかし、Gitの支持者は声が多く、正直に言って、どこでもそれについて話したいというコメントのほうが積極的です。

Mercurialは広く使われていると思いますが、確かにgitと同じくらい頻繁に(おそらくMicrosoftや他の大企業が使用しています)、Mercurialを使用している人々は、ほとんどの場合、すぐに把握できるDSVCを望んでおり、宗教の基礎となるものではありません。そのため、一部のgitユーザーのように積極的であるよりも、発言が少なく、議論においてより反応的です。

Bazaarは、確かに多くのことについて話されていません。なぜなら、それを使用する既知の大きなプロジェクトはほとんどなく、Canonical以外の大企業がそれを使用することが知られているためです。たとえば、Google(git、Mercurial、svn)や大規模なオープンソースプロジェクトと比較すると、なぜそれが実際に話題にされていないのかがわかります。 Fossilはニッチな開発者にとって興味深いものの1つなので、提供する機能(埋め込みWiki、問題追跡、フォーラムなど)を検索する人だけが聞くのは普通で問題ないと思います。

そうは言っても、私たちは hype cycle を徐々に下げていると思います。いくつかの異なるソリューションを使用した多くの開発者は、自分のニーズに合ったソリューションを見つけることができます。

また、Google Code HostingとSourceForgeはgitとMercurialの両方を許可するようになったため、GitHubの機能により、以前よりもgitを選択したときに、プロジェクト固有の選択肢になっています。

実際の戦争はなく、興味深いさまざまなツールがあります。

7
Klaim

この質問にはすでにたくさんの答えがあることは知っていますが、もう少し視点を追加できると思いました。

バザールは色々なもののために作られているので、ずっと使っていました。私がそれを使用した最大のものは、AllTrayプロジェクトで、私は(現在)唯一の開発者および保守者です。バザールはいいです。動作するだけで、邪魔にならず、-helpページやmanページを確認する必要がほとんどありません。そうは言っても、それにはいくつかの欠点があります:

  1. おそらくコアVCSの一部であるはずの多くの機能はありません。履歴の二分を実行する機能、ページャーを介して長い出力を実行する機能、または「コロケートされた」ブランチ(gitスタイルのリポジトリなど)を持つ機能などは、プラグインとして提供されます。
  2. 多くのプラグインはそれほど安定していません。たとえば、同じ場所に配置されたブランチの機能はサーバー側ではうまく機能しないようです(少なくとも、私はそれを機能させることができませんでした。指定されたパスにあるブランチが存在しない場合、目の前にいると、血まみれのものが見えます)。
  3. 「クローン」操作はありません。一度に1つずつブランチをプルします。新しいブランチを効率的にプルできるようにリポジトリが必要な場合は、追加の作業を行う必要があります。
  4. 一部のプロジェクトでは、痛々しく遅いです。いつか「bzr branch lp:mysql」を試してください。
  5. フックに対する強力なサポートが不足しています。フックを提供するbzrプラグインを作成できますが、サーバー側に任意のフックスクリプトを作成する標準的な方法はありません。

私は最近AllTray開発をgitに切り替えましたが、プロジェクトをgitにallに移行することを非常に迅速に検討しています。ロープを知るために費やされる先行時間はもう少しありますが、それだけの価値があるようです。私が気づいたいくつかのこと:

  1. git cloneは比較的高速な操作であり、クローンしたリポジトリに存在するすべてのブランチに関する情報を提供します。
  2. リモートリポジトリを追加するのは簡単です。必要に応じて、複数のブランチを持つ多くの異なるリポジトリを追跡できます。
  3. Pro Gitブックは オンラインで入手可能 であり、eBookリーダーデバイスを含む複数の形式であり、読みにくいものではありません。 。
  4. gitはBazaarよりもはるかに簡単に拡張できるようで、特定のAPIを使用して拡張する必要はありません。 (注意:これは良い面と悪い面の両方です。)
  5. gitには二分割機能が組み込まれており、その機能の有用性を強調することはできません。
  6. GitHubはかなりいいです。
  7. gitosisシステムも非常に優れています。それをBazaarのプラグインとして以外にどのように実装するのかさえわからないので、効率的に近いところにあるとは思えません。

簡単に言えば、私は非常に長い間bzrを使用してきましたが、gitはその素晴らしさをすぐに証明してくれます。

6
Michael Trausch

Gitを使用すると、開発時には常に同じローカルディレクトリにとどまり、git checkout branchnameブランチ間を切り替える(私は常に「軽量」機能ブランチを使用しているため、これは私にとって非常に重要な機能です)。

Mercurialのドキュメントとチュートリアルを見ると、開発のさまざまな分岐に対処するための好ましい方法は、クローンを作成して新しいリポジトリを作成することです。 このチュートリアル は例です。

Mercurialでもgitと同じことができると思いますが、何らかの理由でMercurialのドキュメント(私が読んだもの)では、リポジトリクローンを作成することでほとんどの場合分岐が示されます。

(私は毎日gitを使用しています。Mercurialの経験はほとんどありません。私はそれを試して、いくつかのチュートリアルを実行しました)

5
codeape

過去数週間にそのような怒りがいくつ見られたかはわかりませんが、MercurialやBazaarがGitよりも客観的に優れているという事実を、彼ら全員が考えているようです。使いやすさは共通のテーマのようです。はい、CVSとSubversionを使用した後、Gitを学ぶのは驚くほど困難でしたが、現時点では、別のパラダイムシフトを構成しない限り、他のVCSと交換したくありません。機能の表を参照しても、柔軟性、拡張性、安全性、または簡単な機能についてはほとんどわかりません。たとえば、デフォルトではgit-diffは色とポケットベルを使用します。もちろん、diff ... | colordiff | less -Rか何かですが、なぜ一方が他方より優れているかは明らかです。

4
l0b0

公平を期すために、Git対Mercurialの支持者は、Git対中央集権者に比べて数が少なく、はるかに少ないと思います。ただし、その理由は簡単に要約できます。

Gitはプログラマのためのバージョン管理です。 Mercurialは企業向けのバージョン管理です。集中化は、バージョン管理を発明するための最初の十分な試みでした。特に、それがパーソナルコンピュータ革命の前に設計されたことを考えると。

プログラマーのバージョン管理とは、一般にプログラマーは学習しやすさよりも柔軟性を優先するということです。結局のところ、コンピュータを訓練されていないことができないようにする柔軟性を持たせるために、私たちは何年も難解な言語を学ぶことをいとわないのです。 Gitは、プログラマーが自由に使用できる柔軟性を提供しますが、その柔軟性を安全に使用する方法を学ぶのに時間がかかります。ポリシーを適用するために制限を設けることはできますが、そのままでは効果がありません。メモseではなくlearningの方が簡単だと言いました。一度習得すれば、gitは他のVCSと同じように簡単にseになり、速度と機能が向上するため、多くの場合より簡単になります。

一部のプログラマーは、自分のやりたいことを実行するために十分に学習し、それを行うための新しい方法の学習に抵抗します。企業はこれらの人々の多くを雇い採用しているため、ある程度の親しみを持たせるために、使用するツールに変更を加えたいと考えています。企業はまた、プログラマーが仕事をするのに十分な柔軟性を持っていることを望んでいますが、トレーニングや初期の移行を困難にするほどではありません。これがMercurialが適している場所です。Gitのほとんどの機能を備えていますが、移行パスはやや簡単です。

誇大宣伝やLinusの支持により、Gitが人気があるだけだと言っても不思議ではありません。それはおそらく多くの人々を説明します試してみるそれですが、純粋でシンプルなので、彼らのためにうまく機能するので、彼らはそれに固執してそれを宣伝します。

3
Karl Bielefeldt

NetBSD開発はCVSを使用しており、それだけが重要です。

2

それは、しゃれに向いている、より素朴でより簡潔な名前を持っています。

2

私は最近、個人的なプロジェクトのバージョン管理システムを探していたので、たくさん試してみました。コマンドラインではほとんど読み書きができません。GUIは利用できますが、Gitはコマンドラインから使用することを意図していたため、少し迷っていました。正直なところ、とんでもないほど簡単に拾うことができ、本当に楽しんでいます。ドキュメンテーションは新しいテクノロジーの採用における大きな要因であり、Gitには、明確で利用可能な途方もなく単純なドキュメンテーションがたくさんあります。 SVNやBazaarなどの他の代替手段は素晴らしく、Gitほど簡単ではありませんでした。 Githubも大きな要因です。現在、Githubはオープンソース運動の中心になっているからです。 (皮肉なことに)コードやプロジェクトを交換するための集中管理された場所を持つことは、それ自体がゲームチェンジャーです。

1

ちょうど私の2¢-gitを選択したのは、それがradtool言語や過度に学術的な高水準言語ではなくCで記述されているためです。利点は、高速で効率的であり、説明できないバグや動作が発生した場合に実際にRTFSを実行できることです。また、巨大なインタープリター/ランタイムを含まない小さなセルフホスト開発環境での使用も可能になります。つまり、最新のソースを他の場所にフェッチしてrsyncを実行する必要がなく、Gitリポジトリから直接プルしてそのようなシステムでコンパイルできます。

GNOMEデスクトッププロジェクト が数年前にsvnから移行することを決めたときに、hgとbzrではなくgitを選択した理由をお読みください。もちろん、多くの白熱した宗教的議論がありましたが、 GNOME Wikiページ は、特定のコミュニティに適用された長所と短所をうまくまとめています。

1
calum_b

言うまでもありませんAppleは今それをObjective Cコミュニティにプッシュすることに関与しています。最近Xcode 4で新しいアプリケーションを作成した場合、それが自動的に尋ねられることに気づくでしょう。 Gitリポジトリを作成したいと考えています。

確かにXcode 4はほんの数か月前から存在し、Gitsの以前の成功には影響しませんが、Appleが短時間で物を作ることができることは誰もが知っています。

0
tutts