知識を元に、Gitの使いかたを簡単に紹介していくよ。インストールしておこう。ドキュメントの中にも、とっても有益なチュートリアルが用意されている。Workもし、誰かのプロジェクトを追い掛けたいだけなら、これだけで簡単に開始できるよ。Meこんな感じの小さなテーブルの中では、特定のタスクを行うGitのコマンドを常に左側に、一方右側には、Subversionで同じ作業を行う時に使うと思われるコマンドが並べられている。基本的な使い方を知ることができると思うよ。どんなコマンドも、初めて実行する前には、該当するマニュアルページへ、少なくとも簡単には、目を通すことをお勧めする。多くのコマンドには、(僕らがここで取り上げていない)便利且つ、興味深い機能が実装されているし、知っておいた方が良い注意事項の書かれていることも時々ある。コマンドへ-hスイッチを指定することで参照可能だ。KnowGitを使い始めるにあたって、知っておいたほうが良い、大事なコンセプトが幾つか存在する。いえ、もし凄く急いでいるなら、このセクションをひとまず読み飛ばし、ひどく混乱してしまった場合にだけここへ戻ってくる、という方法も良いよね。面白そうなものだけ読む、というのもありかもね。各プロジェクト毎に、ある独立した中央部へ位置する単一のリポジトリが存在していて、そこが全ての履歴を保持し、またチェックインや、チェックアウトの行われる場所となる。ある、.gitサブディレクトリ内にある)。そのため、ローカルとリモートの複数ブランチを持つことが可能だ。一般的にベアリポジトリと呼ばれる、ワーキングコピーにくっついていないリポジトリを作ることもできる。これは、あなたがリポジトリを公開したい場合に、特に有益だ。これに関しては、後で試してみよう。リポジトリの位置とリポジトリ内のパスとをURLで特定する。その為、あなたがリポジトリのレイアウトとその意味とを体系づける。ディレクトリが作られるだろう。Gitでは、URLはリポジトリの位置を示すためだけに使われ、リポジトリには常にブランチとタグが含まれる。名前が付けられている)。10進数の数値で示されるIDでリビジョンを特定する。この数値は単調増加で、概ね小さな数値だ(とは言え、大規模プロジェクトでは、あっと言う間に大きな数値になるけれども)。ような分散システムでは、現実的ではない。リビジョンの特定にSHA1のIDを使っていて、16進数で書かれた160ビットの長い数値で表される。これは、初めて見たときには、びっくりするかもしれないけど、実際には、大きな障壁とはならない。使える(キャレットを繋げてゆくことも可能だよ)。カットアンドペーストも凄く手助けになるし、リビジョンの先頭数文字書くだけでも大丈夫。補ってくれるよ(リビジョン指定子を用いることで、より進んだ使いかたも可能だ。マニュアルページを参照のこと)。送られてくるパッチ、つまり、作者とコミッタが異なる状況を、便利に扱えるよう、設計されている)。あなたの本名とメイルアドレスを推測しようとするけれど、特にメイルアドレスは、推測が間違っている可能性が高い。-lコマンドを使おう。設定するには次のコマンドが使用できる。you@yourdomain.example.comコマンド。commandという形式をしている。git-commandという形式も同様に利用可能だ。ある種のコマンドは、カラフルな出力を生成できる。カラーで出力したい場合には、次のコマンドを使おう。autoビジュアライズ。リポジトリの中身を確認するには、gitkを使うと便利かも。追跡させ、日々の開発がどんな感じになるのか見てみることにしよう。リポジトリを初期化してみよう。現在のディレクトリ配下にある全てのファイルを追加する。commitは最初のインポートを作成する。これでこのリポジトリは、作業コピーへと結びつけられた。追跡されるようになった。興味があるなら、.gitサブディレクトリの中を少し探索してもいいし、特に気にならないなら、別に覗かなくても構わない。適当にあなたのツリーへ変更を加えてみよう。幾つかのファイルを弄くりまわす、とかね。僕らの行なった変更をチェックしてみよう。lessまさに、これだ。これは最もパワフルなコマンドの一つなんだ。特定リビジョンとpathとのdiffを得るには、こんな感じ。対し、追加や削除、モード変更に関する特別な情報を埋め込む。伝え、実行させながら、パッチを適用する。変更をもっと簡単に確認する方法がある。へその旨伝えてあるものは除く)と共に、分りやすい形式で表示してくれる。冒頭には、現在あなたの居るブランチ名も表示されているだろう。files」が登場してくるかもしれない。追跡されていないファイルだ。するのは、ちょっと待って。cleanを実行しよう。ファイルを追跡しないまま放置しておきたいのであれば、これらを.gitignoreファイルへ追加しよう(これはSVNのsvn:ignoreプロパティと同じように機能する)。ファイルを最新版へ復元するにはこのコマンド。path全てのファイルを復元することも出来るし、指定したファイルだけを復元することも可能だ。教えてあげなければならない。fileまた、add/remove、はディレクトリ全体等に対して、再帰的に行うことも可能だ。GitはCoolだね!さて、そろそろ、変更をコミットする時がきたようだ。驚くべきことに、次のコマンドは全ての変更点をコミットする。commitまたは、Subversionのように、指定されたファイル等だけをコミットするように制限することも可能だ。コミットメッセージに関して一言。メッセージの1行目には、コミットに関する短めのサマリを書くことが慣例となっている。これは、様々なツールが、コミットをリスト表示する際、メッセージの最初の行だけを表示することが多いためだ。従来のように、-mパラメタを使って、コミットメッセージを指定することは可能だけど、複数の-m引数を使うこともできる。この場合、各要素が段落として、コミットメッセージが構築されることになる。-mパラメタを指定しなかったり、または、-eパラメタを指定した場合には、あなたの愛用の$EDITORが起動されるので、それを使ってコミットメッセージを書くことができる。加えて、コミットされるファイルのリストも示される。オマケとして、-vパラメタを指定すれば、コミット予定のパッチ全体がエディタ内に表示される。これにより、手早く最後のレビューを行うことが可能だ。ところで、コミットでヘマをやらかした時、Subversionだと、今一わけのわからないsvnadminサブコマンド群を使う以外、あなたの出来ることは多くないよね。Gitならばもっと上手くできる。--ammendが利用できる。HEAD^で完全に葬りさってしまうこともできる。これは、作業ツリーは変更しないよ。Browsing幾つかコミットしたので、履歴を確認してみよう。logの方が少しばかりパワフルなんだけどね。どんなことが出来るのか、オプションを調べてみて欲しい。コマンドは更に強力で、行の変遷を追いかけることができる。そのファイルがコピーされたり改名された場合でも、追跡可能だ。-Sstringは、stringに合致するファイルを追加したり、削除したコミットを表示してくれる)。ファイルの中身や、ディレクトリのリスト、コミットを確認したいときには、次のコマンドが利用できる。名付けられたディレクトリ内へ置かれる。タグへは、任意の説明を付けることができ(1行目が、特別な意味を持つのはコミットの場合と同様)、実際、リリースアナウンス全体をタグの説明文へ納める人もいる。タグづけした人のIDが格納される(こちらも、コミッタのIDルールと同様だ)。本質的な挙動として、署名は関連するリビジョンや履歴、ツリーに対しても検証される)。いうわけで、次のコマンドを実行してみよう。http://example.com/svn/tags/nameタグのリスト、ならびに、タグのメッセージを見るには以下のコマンド使う。http://example.com/svn/tags/tagSubversion同様、Gitではブランチを作ることができる(こりゃ、驚いた!)。基本的に、プロジェクトをサブディレクトリへとコピーする。Gitでは、その旨を、つまり、まぁ、ブランチを作れ、って指示すればよい。http://example.com/svn/branches/branch最初のコマンドではブランチを作成し、次のコマンドでは、あなたのツリーを特定ブランチへとスイッチしている。branchへ引数を指定しよう。git-branchコマンドを使うことで簡単に見ることができる。引数にブランチリストを指定せず実行しよう。現在のブランチは「*」で示される。http://example.com/svn/branches/あなたのツリーを、古いリビジョンへ戻したい場合には、次のコマンドを使おう。updateまたは、一時的なブランチを作ってもよい。Gitでは、古いリビジョンの上にコミットを作成し、それを別のブランチとして使うことが可能だ。良い具合にサポートしている。両ブランチの履歴はマージ後も保持されるし、同じブランチ間同士でのマージの繰り返しも、意識せず利用可能だ。マージされる側のブランチ上にいることを確認して、もう片方のブランチをマージしてみよう。merge)と呼ばれる)。mergeは、木の残りを結果状態へと更新し、その旨を報告してあなたへと解決を依頼する。commitを実行しよう。branchを実行することで、マージの結果を確認し、自分自身でコミットを行うこともできる)。マージとは別に、時には、別のブランチから、コミットを1つだけ適用したい、と思うこともあるだろう。リビジョンrevの変更点を適用し、現在のブランチへコミットするには、次のコマンドを使おう。分散バージョン管理システムである、ということを無視してきたけど、そろそろ、真実に目を向けても良いんじゃないかな。いうわけで、リモートサイトからの取得を行ってみよう。あなたが、別の誰かのプロジェクトで作業をしよう、と思っているのなら、大抵は、自身のリポジトリで作業を開始するかわりに、その人のリポジトリをcloneしたいと思うだろう。これに関しては、既にこのドキュメントの先頭で説明した。urlさて、あなたはデフォルトブランチ(通常はmaster)を手にしているわけだが、加えて、全てのリモートブランチとタグも手にしている。デフォルト設定では、デフォルトのローカルブランチはoriginリモートを追跡しているんだけど、これはリモートリポジトリ内のデフォルトブランチを指し示している。ここまで、僕らは、ローカルブランチだけで作業してきたからね。したり、書き込んだりすることはできない。一度言わせて欲しい、あなたは決してリモートブランチに干渉することはできない。リモートブランチにスイッチしたいと思ったら、リモートブランチを「追跡(track)」する為のローカルブランチを作成する必要がある。urlもし、常にリモートブランチを追跡したい場合(そして--trackの事を忘れたい場合)、次の設定を行おう。urlコマンドを使えばよい。リモートリポジトリ内のブランチを表示してくれる。することも、そして勿論、マージすることも出来る。するブランチを指定しなかった場合には、便利なことに、リモートのトラッキングをデフォルトで行ってくれる、ということを伝えておこう。行うことになるから、これを自動化する為のコマンドが存在する。Workあなたのローカルリポジトリは、変更をpullする為に他人が使うことも出来るけど、通常は、プライベートなリポジトリとパブリックなリポジトリとを持つんじゃないかな、と思う。remoteで手元の全てのブランチを、対応するリモートブランチへpushできるんだ。この操作は、一般的には、SSH(か、特別な設定が行われたWebServerであればHTTP)上でのみ動作することに注意。SSHキーとSSHエージェントメカニズムの設定を、強く強く推奨する。ないと、リモートブランチにある作業コピーが古いものになってしまい、混乱は免れない。このリポジトリは、パブリックアクセスの為や、開発者の落ち合う場所、例えば履歴を交換したりするだけのような、どのみち、チェックアウトコピーが空間の無駄になるような場所で、一般的に使われている。あなたもこのようなリポジトリを作れるよ。詳細は「公開リポジトリの設定」を参照のこと。GitはSubversionと同じワークフローで動作することが可能で、作業結果の交換の場として単一リポジトリを利用している開発者グループとともに用いることが出来る。行われるようにすることも可能ではある。いえ、これは、グチャグチャになったコミットを修正する、といった柔軟性が失われることになるけれど)。エントリ、もしくは、(SSHを使う場合には)UNIXのアカウントを有している必要がある。限定したい場合には、git-shellをログインシェルに指定すればよい。パッチをメイルで交換することも出来る。Gitはメイルで送られてきたパッチ群に対して、非常に便利な機能を提供している。amへ指定することで可能だ。send-emailが利用できる。Courseを参照のこと)。list(git@vger.kernel.org)まで英語でご連絡を。Baudisによって維持されています。パッチやご意見ご感想などはpasky@suse.czまで(訳文に関する問い合わせはn-miyo@Tempus.ORGまで)。