KernelNewbiesJP:

このページは Jeff Garzik の "Kernel Hackers' guide to git" を翻訳したものです。 http://linux.yyz.us/git-howto.html

最初に

git のインストール

Git を利用するには、git.git (Git リポジトリ)からチェックアウトをして、インストールし、その後linux-2.6.gti(カーネルリポジトリ)をチェックアウトするというような順のブートストラッピングが必要です。 あなたのディストリビューションがすでに、利用可能な git のバージョンを提供していてるのであれば、それを最初に使ってみてください。

もしあなたのディストロがパッケージを用意していない場合には、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 する (例: ハッキングもしくはパッチ適用)

# リポジトリに移動する

$ 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 <your@email.com>

この行はほぼ全てのカーネルへの提案に共通。

ときどき tag をダウンロードすることを忘れないように

git pull は sha1-inedxed オブジェクトデータと要求されたリモートhead を ダウンロードするだけである。これでは、.git/refs/tags と .git/refs/head/ ディレクトリの更新はされない。 タグについては、 git pull --tags を実施する。

KernelNewbiesJP: Kernel_Hackers'_guide_to_git (last edited 2007-08-23 16:08:42 by TsugikazuShibata)