出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2019/11/02 08:09 UTC 版)
ナビゲーションに移動 検索に移動|
|
この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。
出典を追加して記事の信頼性向上にご協力ください。(2019年10月) |
|
|
この記事はスペイン語版Wikipediaの対応するページを翻訳することにより充実させることができます。(2019年10月)
翻訳前に重要な指示を読むには右にある[表示]をクリックしてください。
|
GIT(ヒット/ギット。またはG.I.T.)1980年代初頭にアルゼンチンのブエノスアイレスから生まれたロックとニューウェーブのグループで、パブロ・グジョット(ギターとボーカル)、ウィリー・イトゥリ(ドラムとボーカル)、アルフレド・トス(ボーカルとベース)で構成されています。
| Año | Nombre del álbum | Discográfica | Tipo de álbum |
|---|---|---|---|
| 1984 | G.I.T. | DG Discos (Interdisc/Universal) | スタジオ |
| 1985 | GIT Volumen 2 | CDA (Interdisc/Universal) | スタジオ |
| 1986 | GIT Volumen 3 | Interdisc/Universal | スタジオ |
| 1988 | Primera sangre | BMG | スタジオ |
| 1992 | Distorsión | EMI | スタジオ |
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2026/02/11 09:10 UTC 版)
| |
|
|
GitのWebインターフェース、gitweb
|
|
| 開発元 | 濱野純, リーナス・トーバルズ, ほか多数 |
|---|---|
| 初版 | 2005年12月21日 |
| 最新版 | 2.53.0[1] |
| リポジトリ | |
| プログラミング 言語 |
C, Bourne Shell, Tcl, Perl |
| 対応OS | Unix系、Linux、Windows、macOS |
| 種別 | バージョン管理ソフトウェア |
| ライセンス | GNU General Public License バージョン2,GNU Lesser General Public License 2.1 |
| 公式サイト | git-scm |
Git(ギット[2][3][4][5])は、プログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システムである。Linuxカーネルのソースコード管理に用いるためにリーナス・トーバルズによって開発され、それ以降ほかの多くのプロジェクトで採用されている。Linuxカーネルのような巨大プロジェクトにも対応できるように、動作速度に重点が置かれている。現在のメンテナは濱野純 (英語: Junio C Hamano) で、2005年7月から担当している。
Gitでは、各ユーザのワーキングディレクトリに、全履歴を含んだリポジトリの完全な複製が作られる。したがって、ネットワークにアクセスできないなどの理由で中心リポジトリにアクセスできない環境でも、履歴の調査や変更の記録といったほとんどの作業を行うことができる。これが「分散型」と呼ばれる理由である。
Linuxカーネルの開発では、Linux Kernel Mailing List[※ 1] に投稿される多数のパッチをメンテナーたちがソースコードに適用するという形式が採用されている。これらの作業を効率的に行うため、当初はBitKeeperというバージョン管理システムを用いていたが、このソフトウェアは商用ソフトウェアであった(クライアントはバイナリ版のみ無料で、サーバは商用だがBitMover社の厚意で無料で使えていた)。この状況を快く思わない人々がBitKeeperのクローンを実装したことから、この環境が使えなくなってしまい(BitKeeper#ライセンス問題やBitKeeper#価格変更を参照)、その代替として2005年にGitが開発された[7]。
Linuxカーネルの開発では、巨大なソースコードの集合を扱うため、変更点の抽出やリポジトリ操作ができるかぎり高速にできる必要がある。他の様々なバージョン管理システムをあたったが、満足のいくものがなかったため、Gitではこのような問題も出来る限り解決できるよう、いくつかのアイデアが導入されている(この部分は、他のバージョン管理システムにも同様の機能が導入されるようになった)。
Gitは分散型のソースコード管理システムであるため、リモートサーバ等にある中心リポジトリの完全なコピーを手元(ローカル環境)に作成して、そのローカルリポジトリを使って作業を行う。
一般的な開発スタイルでは、大雑把に言えば、以下のようなステップの繰り返しで作業が行なわれる:
リポジトリ間の通信 (clone, pull, push) では以下のプロトコルが使用できる[8]。
以前はrsyncも使用できたが、2.8.0で廃止された[12]。
Gitの設計はBitKeeperとMonotoneが元になっている[13][14]。元々のGitはローレベルなエンジンとして設計されていたが、これは、他の開発者がCogitoやStGITのようなフロントエンドを容易に開発できるようにすることを目的としていた[15]。現在では、Gitのコア自体もユーザから直接利用できるようになっている[16]。
Gitの設計には、リーナスが大規模プロジェクトのメンテナンスを行った経験や、ファイルシステムのパフォーマンスに関する深い知識、また実用性のあるシステムを短期間に作成しなければならないという差し迫った必要性(BitKeeperを参照)が反映されている。これらの影響は、以下のような形で実装に現れている。
git-gc --pruneコマンドを使用して明示的にガベージコレクションを行うこともできるが、この処理には時間がかかる[22]。Gitの特徴の一つとして、ディレクトリツリーに対するスナップショットを作成する点が挙げられる。初期のバージョン管理システム(SCCSやRCS)では、個々のファイルを処理の対象としており、直近のバージョンに対して差分符号化を行うことでリポジトリのサイズを縮小することに機能の重点が置かれていた。以降のバージョン管理システムでも、この「プロジェクト内の複数バージョンにまたがって一つのファイルを追跡できる」という概念が継承されていた。
一方、Gitではこのコンセプトを使用していない[23]。その結果として、Gitはソースコードツリー中のファイルのリビジョン間の関係性を記録しなくなっている。これにより、Gitは以下のような特徴をもつようになっている。
リポジトリの保存方法については批判もある。
git gcコマンドを使用することで手動で再パックを行うこともできる。Gitは以下のマージアルゴリズムを実装している。アルゴリズムはマージ時に選択することができる[29]。
リーナス・トーバルズによれば[31]、
| 「 | 僕は自己中心的な奴だから、自分のプロジェクトには自分にちなんだ名前を付けるようにしているんだ。最初はLinuxで、今度はGitだ。 | 」 |
英語のスラングとして、Gitには「バカ」「間抜け」といった類の意味がある[32]。この自虐ネタはもちろん皮肉で、これはリーナスがLinuxの名前を決める際に自身の名前にちなんだ名前を付けるよう強要されたことから来ている。(Linux#名前の由来を参照)
Gitのオフィシャルサイトのウィキでは、“Git”という名前に対して他にもいくつかの解釈がなされている。例としてはGlobal Information Trackerなどが挙げられる[33]。
Gitの開発は、Linuxカーネルの開発者の多くがBitKeeperのシステムに対するアクセスを禁止されたことに端を発している(BitKeeper#価格変更を参照)。これは、アンドリュー・トリジェル (Andrew Tridgell) がプロプラエタリなソフトウェアであるBitKeeperのプロトコルをリバースエンジニアリングしたことに対し、BitKeeperの著作者であるラリー・マクボイがこれをライセンス違反であるとして、BitKeeperの無料提供を止めたためである。Linux.conf.au 2005のキーノートにおいて、トリジェルはこのリバースエンジニアリングの手順について説明を行ったが、内容はBitKeeperのサーバの適切なポートにtelnetでアクセスし“help”とタイプするだけという単純なものだった[34]。
リーナスはBitKeeperと同じように使える分散型バージョン管理システムを探していたが、無料のシステムで彼の要求(特に速度面での要求)に適合するものは見つからなかった。リーナスが書いたメールによると、2005年4月7日頃に最初のプロトタイプを作成していたようである[35]。
| 「 | だけど、僕が見たSCMたちはそれ(bk pull相当のこと)をするのが大変だったんだ。僕がやろうとしていることの1つは(実はこれが一番なんだけど)その過程を十分効率的にすること。もし1つのパッチを適用してその変更の境界を記録するなどするのに30秒かかったとすると(正直、Linux規模のプロジェクトで30秒っていうのは大抵のSCMでは速いほうの見積りだけど)、250通(例えばAndrew[※ 2] と同期するときには決して珍しい量じゃない)のメールパッチを適用するのに2時間かかることになる。 BKはスピード狂ではなくて、(他のSCMと比較するとBKは1桁か2桁くらいは高速だけど)Andrew[※ 2]とマージをする時に1メールにつき約10-15秒かかっていた。だけど、BKではそれは大きな問題にならなかったんだ。BK⇔BK間のマージは簡単だから、僕は他の主要な開発者とは時間がかかるメールでのマージをしたことはなかったから。パッチアプリケーションに基づいたSCMにするなら、"マージ機能" をBKよりも速くしなければならなくなる。それは本当に本当に大変なこと。 だから、僕はいまスクリプトを書いていて、変更をずっと速く追跡できるようにしているんだ。最初の目標はパッチを適用するのと同じくらい高速にそれを行うこと。だけどはっきりいって、今のところできたのは多く見積もってもまだ半分くらいで、思わぬ障害にぶつかったら全然嘘になるかもしれないけど。いずれにせよ、僕がそれをすぐにできる理由は、僕のスクリプトがSCMではないからで、とても特別で "Linuxの状態を記録する" ようなものだからなんだ。それはリニアなパッチを十分効率的な時間でマージできるようになるだろう。 (パッチの適用が3秒でできるなら、大きな1つながりのパッチでも問題にはならない: 途中で失敗しても1分か2分で気がつくなら、それで十分で、手作業で修正することができる。待ち時間が重要な理由はそこにある。-- "オフライン" で効果的にそれができるなら、問題が起きた時に僕は定義どおりそれを修理できずにいるだろう) |
」 |
リーナスは以下のような原則に基づいて設計を行っている。
最初の3つの条件によって、既存のバージョン管理システムはMonotoneを除き全て選に漏れてしまい、4つ目の条件で該当するものがなくなってしまった[37]。そのため、Linuxカーネル2.6.12-rc2のリリース直後に[37]、リーナスは自分で開発を始めた[37]。
Gitの開発は2005年4月3日に開始された[39]。プロジェクトとしてのアナウンスは4月6日に行われ[40]、4月7日にはセルフホスティングされるようになった[39]。4月18日には複数のブランチからのマージが最初に行われた[41]。4月29日にはリーナスの目標としていた処理速度が実現された。Linuxのカーネルツリーにパッチを当てるベンチマークで、初期のGitでは毎秒6.7個のパッチを処理している[42]。6月6日には、GitによるLinuxカーネル2.6.12のリリースが行われた[43]。
BitKeeperからの影響で、リーナスは従来と同じようなアプローチを意図的に避けており、結果としてGitは非常にユニークな設計になっている[44]。技術に長けたユーザがGitを利用できるようになるレベルまではリーナスが開発を行っており、その後、2005年6月26日にはプロジェクトへの主要な貢献者であった濱野純 (Junio C Hamano) にメンテナンスが引き継がれた[45]。濱野は2005年12月21日にバージョン1.0のリリースを行い[46]、2021年5月現在も彼がメンテナンスを行っている。
ソフトウェア開発におけるGitブランチの作成・更新モデルをブランチモデルと呼ぶ。
GitHub flowはブランチモデルの一種である[47]。GitHub flowの方針は「masterブランチは常にデプロイ可能」である[48]。コードの変更を行う際にはトピックを名称とするブランチをmasterからforkする。マージ時を含め他者からの意見募集・レビューを行う際にはpull request(merge request)を用いる。pull request時に自動化テスト(c.f. 継続的インテグレーション)をおこなうことでmergeの安全性を確保し、masterが常に正常 = デプロイ可能に保たれる。GitHub flowが有効な分野は継続的デリバリー・継続的デプロイメントが有効な分野、例えばWebサービスが挙げられる。
2011年の提唱時と比較して、GitHub社ではモデルの一部を変更している。オリジナルのGitHub flowでは更新がmasterへマージされ、そこからデプロイされる。GitHub社ではレビュー後(CI後)のtopic branchが最終テストとしてプロダクション環境へデプロイされる。そこで問題がないと確認されたのちにmasterへmergeされている[49]。このモデル変更により、CIで判明しなかったバグが発生した場合にmasterのrevert commitではなくmasterの再デプロイで対応できる。
Gitはブランチのマージ(merge)に対応している。
マージが行われるとマージコミット(英: merge commit)が生成される。コンフリクトが発生しない場合、git mergeがマージコミットを自動生成する[50]。コンフリクトが発生した場合、まず安全な範囲がマージされインデックスとワーキングツリーが更新される[51]。自動マージできないコンフリクト部は、ワーキングツリーに特定の記法で両方の変更が併記された状態になる[52]。ユーザーによるコンフリクト修正後git addをおこない、git commitあるいはgit merge --continueをおこなってはじめてマージコミットが生成される[53]。
マージコミットの実体は2つ以上のparent属性を持つただのコミットオブジェクトである(特別なGitオブジェクトではない)[54]。通常のコミットオブジェクトと同様に変更後ファイルセットがtreeに記録され、更新の元となっている(複数の)コミットがparentに設定されているだけである。
マージコミットは複数のブランチをそれらの上流へ統合する唯一の手段ではない。マージコミット以外の手法としては、ブランチ全体ないしはその連続した一部分を構成する一連のコミットについて、更新された上流のコミットを含む任意のコミットを起点としてそれらを適用し直す機能をサポートしている。この機能はリベース(英: rebase)と呼ばれている。マージコミットとの違いとして、どのコミットも更新元のコミットを1つだけ持たせることにより、ツリー中のコミットをリニアに保つことができる。また、リベースの副次的な機能として、リベース対象となるコミットのうち、任意の連続したコミットを単一のコミットにまとめることもできる。リベース中にコンフリクトが発生した場合、Gitはリベース処理を中断し、ユーザにコンフリクトを手動で解決させる。リベース対象のコミットはリベース後も残る[※ 3]ので、コンフリクトに不安があるのであればリベース対象の一連のコミットに対してリベース専用のブランチを作成し、それをリベースすれば良い。リベースに成功した場合は元のブランチを削除した上でリベース専用のブランチを元の名前に改名することにより、ブランチを直接リベースした場合と同じ結果が得られる。リベースに失敗した場合はリベース専用のブランチを削除するだけでリベース前の状態に戻すことができる。
Gitはどちらの手法もサポートしており、どちらを採用するかはGitを利用するプロジェクト、あるいはプロジェクトが許すならば、個々の開発者が任意に選ぶことができる。
なお、別のブランチから変更を適用するマージ以外の手段としてチェリーピック(英: cherry-pick)もある[55][56]。
Gitはソースコードの管理や流通を目的としたソフトウェアであるがゆえに、そのコーディングガイドライン[57]にあってはメインストリームではないものも含めて幅広いプラットフォームをサポートし、特定のプラットフォームへの依存を防ぐことを目標としている。具体的な実践例として、ある新規の実装や変更について、それがPOSIXを含め単純に既存の規格上サポートされているという理由だけでGitをそれに依存させることを拒否する[※ 4]、バージョン2.35.0以降におけるC言語の規格はC99に準拠し、特定のコンパイラに依存するものを含め、これを逸脱するC言語の機能には依存しないなどがある。
2025年9月4日、Patrick SteinhardtがGitのコア実装にRustを導入するパッチをGitのメーリングリストに投稿し、併せてバージョン3.0にてGitのビルドにRustを必須とすることを公表した。[58]この投稿に対し、現状でGitはサポートしているがRustがサポートしていないアーキテクチャやOSが少なくないことが指摘され、議論となっている。[59]
git-blameコマンドを使用したソースファイル間のコードの移動の調査について HEAD, index, and working tree are updated to it."[git 1] 出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2017/05/08 07:41 UTC 版)
| このページのノートに、このページに関する提案があります。 提案の要約:#関連文献(書籍や雑誌記事のリスト)の編集除去 |
| このページの名前に関して「Git」への改名が提案されています。 議論はノート:git#改名提案:git→Gitを参照してください。(2017年5月) |
gitのWebインターフェース、gitweb
|
|
| 開発元 | 濱野純, リーナス・トーバルズ, ほか多数 |
|---|---|
| 初版 | 2005年12月21日 |
| 最新版 | 2.12 - 2017年2月24日[1][±] |
| リポジトリ | https://github.com/git/git, git://git.kernel.org/pub/scm/git/git.git |
| プログラミング言語 | C, Bourne Shell, Tcl, Perl |
| 対応OS | Unix系, Linux, Windows, macOS |
| 種別 | バージョン管理ソフトウェア |
| ライセンス | GNU General Public License バージョン2,GNU Lesser General Public License 2.1 |
| 公式サイト | git-scm |
git(ギット[2][3][4])は、プログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システムである。Linuxカーネルのソースコード管理に用いるためにリーナス・トーバルズによって開発され、それ以降ほかの多くのプロジェクトで採用されている。Linuxカーネルのような巨大プロジェクトにも対応できるように、動作速度に重点が置かれている。現在のメンテナンスは濱野純 (Junio C Hamano) が担当している。
gitでは、各ユーザのワーキングディレクトリに、全履歴を含んだリポジトリの完全な複製が作られる。したがって、ネットワークにアクセスできないなどの理由で中心リポジトリにアクセスできない環境でも、履歴の調査や変更の記録といったほとんどの作業を行うことができる。これが「分散型」と呼ばれる理由である。
Linuxカーネルの開発では、Linux Kernel Mailing Listに投稿される多数のパッチをメンテナーたちがソースコードに適用するという形式が採用されている。これらの作業を効率的に行うため、当初はBitKeeperというバージョン管理システムを用いていたが、このソフトウェアは商用ソフトウェアであった(クライアントはバイナリ版のみ無料で、サーバは商用だがBitMover社の好意で無料で使えていた)。この状況を快く思わない人々がBitKeeperのクローンを実装したことから、この環境が使えなくなってしまい(BitKeeper#ライセンス問題やBitKeeper#価格変更を参照)、その代替として2005年にgitが開発された。[5]
Linuxカーネルの開発では、巨大なソースコードの集合を扱うため、変更点の抽出やリポジトリ操作ができるかぎり高速にできる必要がある。他の様々なバージョン管理システムをあたったが、満足のいくものがなかったため、gitではこのような問題も出来る限り解決できるよう、いくつかのアイデアが導入されている(この部分は、他のバージョン管理システムにも同様の機能が導入されるようになった)。
gitは分散型のソースコード管理システムであるため、リモートサーバ等にある中心リポジトリの完全なコピーを手元(ローカル環境)に作成して、そのローカルリポジトリを使って作業を行う。
一般的な開発スタイルでは、大雑把に言えば、以下のようなステップの繰り返しで作業が行なわれる:
リポジトリ間の通信 (clone, pull, push) では以下のプロトコルが使用できる[6]。
rsyncやFTP/FTPSは、もはや使うべきではないとされている[7]。
gitの設計はBitKeeperとMonotoneが元になっている[8][9]。元々のgitはローレベルなエンジンとして設計されていたが、これは、他の開発者がCogitoやStGITのようなフロントエンドを容易に開発できるようにすることを目的としていた[10]。現在では、gitのコア自体もユーザから直接利用できるようになっている[11]。
gitの設計には、リーナスが大規模プロジェクトのメンテナンスを行った経験や、ファイルシステムのパフォーマンスに関する深い知識、また実用性のあるシステムを短期間に作成しなければならないという差し迫った必要性(BitKeeperを参照)が反映されている。これらの影響は、以下のような形で実装に現れている。
git-gc --pruneコマンドを使用して明示的にガベージコレクションを行うこともできるが、この処理には時間がかかる[17]。gitの特徴の一つとして、ディレクトリツリーに対するスナップショットを作成する点が挙げられる。初期のバージョン管理システム(SCCSやRCS)では、個々のファイルを処理の対象としており、直近のバージョンに対して差分符号化を行うことでリポジトリのサイズを縮小することに機能の重点が置かれていた。以降のバージョン管理システムでも、この「プロジェクト内の複数バージョンにまたがって一つのファイルを追跡できる」という概念が継承されていた。
一方、gitではこのコンセプトを使用していない[18]。その結果として、gitはソースコードツリー中のファイルのリビジョン間の関係性を記録しなくなっている。これにより、gitは以下のような特徴をもつようになっている。
リポジトリの保存方法については批判もある。
gitは以下のマージアルゴリズムを実装している。アルゴリズムはマージ時に選択することができる[24]。
リーナス・トーバルズによれば[26]、
| “ | 僕は自己中心的な奴だから、自分のプロジェクトには自分にちなんだ名前を付けるようにしているんだ。最初はLinuxで、今度はgitだ。 | ” |
英語のスラングとして、gitには「バカ」「間抜け」といった類の意味がある。この自虐ネタはもちろん皮肉で、これはリーナスがLinuxの名前を決める際に自身の名前にちなんだ名前を付けるよう強要されたことから来ている。(Linux#名前の由来を参照)
gitのオフィシャルサイトのWikiでは、“git”という名前に対して他にもいくつかの解釈がなされている。例としてはGlobal Information Trackerなどが挙げられる[27]。
gitの開発は、Linuxカーネルの開発者の多くがBitKeeperのシステムに対するアクセスを禁止されたことに端を発している(BitKeeper#価格変更を参照)。これは、アンドリュー・トリジェル(Andrew Tridgell)がプロプラエタリなソフトウェアであるBitKeeperのプロトコルをリバースエンジニアリングしたことに対し、BitKeeperの著作者であるLarry McVoy(en)がこれをライセンス違反であるとして、BitKeeperの無料提供を止めたためである。Linux.conf.au 2005のキーノートにおいて、Tridgellはこのリバースエンジニアリングの手順について説明を行ったが、内容はBitKeeperのサーバの適切なポートにtelnetでアクセスし“help”とタイプするだけという単純なものだった[28]。
リーナスはBitKeeperと同じように使える分散型バージョン管理システムを探していたが、無料のシステムで彼の要求(特に速度面での要求)に適合するものは見つからなかった。リーナスが書いたメールによると、2005年4月7日頃に最初のプロトタイプを作成していたようである[29]。
| “ | だけど、僕が見たSCMたちはそれ(bk pull相当のこと)をするのが大変だったんだ。僕がやろうとしていることの1つは(実はこれが一番なんだけど)その過程を十分効率的にすること。もし1つのパッチを適用してその変更の境界を記録するなどするのに30秒かかったとすると(正直、Linux規模のプロジェクトで30秒っていうのは大抵のSCMでは速いほうの見積りだけど)、250通(例えばAndrew[30] と同期するときには決して珍しい量じゃない)のメールパッチを適用するのに2時間かかることになる。 BKはスピード狂ではなくて、(他のSCMと比較するとBKは1桁か2桁くらいは高速だけど)Andrew[30]とマージをする時に1メールにつき約10-15秒かかっていた。だけど、BKではそれは大きな問題にならなかったんだ。BK<->BK間のマージは簡単だから、僕は他の主要な開発者とは時間がかかるメールでのマージをしたことはなかったから。パッチアプリケーションに基づいたSCMにするなら、“マージ機能”をBKよりも速くしなければならなくなる。それは本当に本当に大変なこと。 だから、僕はいまスクリプトを書いていて、変更をずっと速く追跡できるようにしているんだ。最初の目標はパッチを適用するのと同じくらい高速にそれを行うこと。だけどはっきりいって、今のところできたのは多く見積もってもまだ半分くらいで、思わぬ障害にぶつかったら全然嘘になるかもしれないけど。いずれにせよ、僕がそれをすぐにできる理由は、僕のスクリプトがSCMではないからで、とても特別で“Linuxの状態を記録する”ようなものだからなんだ。それはリニアなパッチを十分効率的な時間でマージできるようになるだろう。 (パッチの適用が3秒でできるなら、大きな1つながりのパッチでも問題にはならない: 途中で失敗しても1分か2分で気がつくなら、それで十分で、手作業で修正することができる。待ち時間が重要な理由はそこにある。--“オフライン”で効果的にそれができるなら、問題が起きた時に僕は定義どおりそれを修理できずにいるだろう) |
” |
リーナスは以下のような原則に基づいて設計を行っている。
最初の3つの条件によって、既存のバージョン管理システムはMonotoneを除き全て選に漏れてしまい、4つ目の条件で該当するものがなくなってしまった[32]。そのため、Linuxカーネル2.6.12-rc2のリリース直後に[32]、リーナスは自分で開発を始めた[32]。
gitの開発は2005年4月3日に開始された[34]。プロジェクトとしてのアナウンスは4月6日に行われ[35]、4月7日にはセルフホスティングされるようになった[34]。4月18日には複数のブランチからのマージが最初に行われた[36]。4月29日にはリーナスの目標としていた処理速度が実現された。Linuxのカーネルツリーにパッチを当てるベンチマークで、初期のgitでは毎秒6.7個のパッチを処理している[37]。6月6日には、gitによるLinuxカーネル2.6.12のリリースが行われた[38]。
BitKeeperからの影響で、リーナスは従来と同じようなアプローチを意図的に避けており、結果としてgitは非常にユニークな設計になっている[39]。技術に長けたユーザがgitを利用できるようになるレベルまではリーナスが開発を行っており、その後、2005年6月26日にはプロジェクトへの主要な貢献者であったJunio C Hamanoにメンテナンスが引き継がれた[40]。Hamanoは2005年12月21日にバージョン1.0のリリースを行い[41]、2009年3月現在も彼がメンテナンスを行っている。
git-blameコマンドを使用したソースファイル間のコードの移動の調査について
|
||||||||||||||||||||||||||||||
GITと同じ種類の言葉
固有名詞の分類