このページは 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 <your@email.com>
この行はほぼ全てのカーネルへの提案に共通。
== ときどき tag をダウンロードすることを忘れないように ==
git pull は sha1-inedxed オブジェクトデータと要求されたリモートhead を
ダウンロードするだけである。これでは、.git/refs/tags と
.git/refs/head/ ディレクトリの更新はされない。 タグについては、
git pull --tags を実施する。