This page is come from Jeff Garzik's "Kernel Hackers' guide to git" translated into Japanese. このページは Jeff Garzik の "Kernel Hackers' guide to git" を翻訳したものです。http://linux.yyz.us/git-howto.html <> = 最初に = == git のインストール == Git を利用するには、git.git (Git リポジトリ)からチェックアウトをして、インストールし、その後linux-2.6.gti(カーネルリポジトリ)をチェックアウトするというような順のブートストラッピングが必要です(訳注:linux カーネルのハッキングを git を利用して行うためには、まず最新の gitソース を git リポジトリから git を使って取り出すということをしないといけない、ということを言おうとしています。なので...) あなたのディストリビューションがすでに、利用可能な git のバージョンを提供していてるのであれば、それを最初に使ってみてください。 * Fedora Core 3 とそれ以降では: git-core パッケージは [[http://fedoraproject.org/wiki/Extras|Feroda Extras]] にあります . `yum install git-core` もしあなたのディストロがパッケージを用意していない場合には、gitのソースコードの daily スナップショットをダウンロードすることから始める必要があります。 最新の安定版のダウンロード先は: http://www.kernel.org/pub/software/scm/git/ tarball をビルドするために依存するのは: [[http://www.zlib.net/|zlib]], [[http://curl.haxx.se/|libucurl]], libcrypto,([[http://www.openssl.org/|openssl]]) です tar ball をインストールするには: `アンパック & make & sudo make prefix=/usr/local install` この残りのドキュメントを読んだ後、戻ってきて、現在のgit を最新の git に更新してください。最新版は以下にあります: git://git.kernel.org/pub/scm/git/git.git == 最初の段階での linux kernel ツリーのダウンロード == `$ git-clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git linux-2.6` 備考:カーネルツリーはとても大きいので、これは数100MBのデータになることがあります。 ---------- = 基本操作 = == ローカルカーネルツリーを最新の 2.6.x upstream に更新する("fast-forward merge") == `$ cd linux-2.6` `$ git pull git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git` == 全てのローカルな修正を元に戻す == `$ git checkout -f` == あなたの修正を checkin する (例: ハッキングもしくはパッチ適用) == `# リポジトリに移動する` `$ cd linux-2.6` `# 修正をする` `$ vi drivers/net/sk98lin/skdim.c` `#注:ファイルを追加したり削除した場合は、git-add と git-rm を実行すること` `# すべての修正をチェックインする` `$ git commint -a` == 作業ディレクトリの全ての変更をdiff形式で表示する == 最後の git-update-index からの変更を表示 `$ git diff` 最後のcommit からの変更を表示 `$ git diff HEAD` == 作業ディレクトリの全ての変更について要約を得る == `$ git status` == すべての変更をリストする == `$ git log` == 指定したファイルに関連する全ての変更をリストする == (このケースでは net/ieee80211/ieeee80211_module.c) `$ git-whatchanged net/ieee80211/ieee80211_module.c` ---------- = ブランチ = == 全てのブランチをリストする == `$ git branch` == 作業ディレクトリで望みのブランチをカレントに設定する == `$ git checkout $branch` == 新ブランチを作り、カレントに設定する == `$ git checkout -b my-new-branch-name master` == どのブランチがカレントか調べる == `$ git branch` (ブランチに * が付いていつものがカレント) == カレントブランチとマスターブランチの diff を得る == '''大抵のブランチ付き'''ツリーでは diff やマージを簡単に行うため、 .git/refs/heads/master には現状の 'バニラ'upstream ツリーが格納されている (ブランチが無いツリーの場合、マスターには 単にあなたの最新の変更が 格納されている) `$ git diff master..HEAD` (これは '''git diff HEAD''' と同じ、HEADブランチを使っている場合) == カレントブランチとマスターブランチの変更のリストを得る == `$ git log master..HEAD` (これは '''git log''' と同じ、HEAD ブランチを使っている場合) changeset の全記述を得る代わりに、各変更の1行サマリを得るには: `$ git log master..HEAD | git shortlog` == 1つのブランチの変更を別のものにマージする == あなたがブランチA と ブランチB で作業していたとして、これらの2つのブラ ンチでの作業が終了した後、これらの作業をブランチM にマージすることを想定。 `$ git chekout M # ブランチM にスイッチ` `$ git pull . A # A を M にマージ` `$ git pull . B # B を M にマージ` ---------- = いろいろなこと = == バークレイ mbox形式ファイルにあるすべてのパッチを適用 == 最初に、git-core リポジトリの tools サブディレクトリがあなたのPATH に 設定されていることを確認して。 `$ cd my-kernel-tree-2.6` `$ git-applymbox /path/to/mbox /path/to/signoff.txt` ファイル /path/to/mbox はバークレイ mbox ファイルで、git リポジトリに コミットされるべき 1つかそれ以上のパッチが含まれている。ここではオプションとして、ファイル /path/to/signoff.txt を指定している。これは各 changeset の記述に追加する内容を記したテキストファイルである。Linux カーネルの場合、全ての変更の提案には以下のような行を含めるのが一般的である。 `Signed-off-by: Your Name ` この行はほぼ全てのカーネルへの提案に共通。 == tag をダウンロードすることを忘れないように == git pull は sha1-inedxed オブジェクトデータと要求されたリモートhead を ダウンロードするだけである。これでは、.git/refs/tags と .git/refs/head/ ディレクトリの更新はされない。 タグについては、 git pull --tags を実施する。