このページは Jeff Garzik の "Kernel Hackers' guide to git" を翻訳したものです。 http://linux.yyz.us/git-howto.html = 最初に = == git のインストール == Git は git.git (Git リポジトリ)と linux-2.6.gti(カーネルリポジトリ)か らチェックアウトしてからインストールするのであればブートストラッピング が必要です。 あなたのディストリビューションがすでに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 をビルドするために依存するのは: zlib, libucurl, libcrypto,(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 する (例: ハッキングもしくはパッチ適用) == # リポジトリに移動する $ git commit -a # 修正をする $ vi drivers/net/sk98lin/skdim.c # すべての修正をチェックインする $ 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 を得る == '''大抵のブランチ付き'''ツリーでは、.git/refs/heads/master にはカレントの 'バニラ'upstream ツリーが格納されている、簡単にdiff したり、マージする ため(ブランチが無いツリーの場合、マスターには 単にあなたの最新の変更が 格納されている) $ git diff master..HEAD (これは '''git diff HEAD''' と同じ、HEADブランチを使っている場合) == カレントブランチとマスターブランチの変更のリストを得る == $ git log master..HEAD (これは '''git log''' と同じ、HEAD ブランチを使っている場合) changeset のすべての状況をえるかわりに、それぞれの変更のオンラインサマ リーを得るには: $ 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 を実施する。