<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wiki.archlinux.jp/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ulaeex</id>
	<title>ArchWiki - 利用者の投稿記録 [ja]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.archlinux.jp/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ulaeex"/>
	<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php/%E7%89%B9%E5%88%A5:%E6%8A%95%E7%A8%BF%E8%A8%98%E9%8C%B2/Ulaeex"/>
	<updated>2026-05-15T15:24:29Z</updated>
	<subtitle>利用者の投稿記録</subtitle>
	<generator>MediaWiki 1.44.3</generator>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Git&amp;diff=11258</id>
		<title>Git</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Git&amp;diff=11258"/>
		<updated>2018-01-09T23:06:46Z</updated>

		<summary type="html">&lt;p&gt;Ulaeex: リンク先が502(progit.org)になっているものを削除、リンク先が404(www.kernel.org)になっているものを正しいリンク先に修正&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:バージョン管理システム]]&lt;br /&gt;
[[en:Git]]&lt;br /&gt;
[[zh-hans:Git]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Gitweb}}&lt;br /&gt;
{{Related|Cgit}}&lt;br /&gt;
{{Related|HTTP トンネリング#Git のトンネリング}}&lt;br /&gt;
{{Related|Subversion}}&lt;br /&gt;
{{Related|Concurrent Versions System}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:ja:Git|Git]] は Linux カーネルの創設者である Linus Torvalds によって設計・開発されたバージョン管理システム (VCS) です。現在 Git は Linux カーネルのソースの管理だけでなく、様々な他のプロジェクトにも使われており、Arch Linux プロジェクトもそれに含まれます。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|git}} パッケージを[[インストール]]してください。開発版を使いたいときは {{AUR|git-git}} パッケージをインストールしてください。&lt;br /&gt;
&lt;br /&gt;
Git の補助ツールを使いたい場合は、必要に応じて任意の依存パッケージもインストールしてください。GUI ツール (例: &#039;&#039;gitk&#039;&#039; や &#039;&#039;git gui&#039;&#039;) は {{Pkg|tk}} パッケージを必要とし、インストールしていない場合エラーで起動できません:&lt;br /&gt;
&lt;br /&gt;
 /usr/bin/gitk: line 3: exec: wish: not found.&lt;br /&gt;
&lt;br /&gt;
また、GUI ツールは {{pkg|gsfonts}} を必要とし、インストールしていない場合セグメンテーション違反でクラッシュします。&lt;br /&gt;
&lt;br /&gt;
Git SVN ブリッジ (&#039;&#039;git svn&#039;&#039;) を使いたい場合は {{pkg|perl-term-readkey}} も必要です。インストールしていない場合、次のエラーが表示されます:&lt;br /&gt;
&lt;br /&gt;
 Can&#039;t locate Term/ReadKey.pm in @INC (you may need to install the Term::ReadKey module)&lt;br /&gt;
&lt;br /&gt;
{{Note|&#039;&#039;git-gui&#039;&#039; でスペルチェックを有効にするには {{Pkg|aspell}} と {{ic|LC_MESSAGES}} [[環境変数]]に対応する辞書が必要です。詳しくは {{Bug|28181}} や [[aspell]] の記事を読んでください。}}&lt;br /&gt;
&lt;br /&gt;
== 基本設定 ==&lt;br /&gt;
&lt;br /&gt;
Git を使うには少なくとも名前とメールアドレスを設定する必要があります:&lt;br /&gt;
&lt;br /&gt;
 $ git config --global user.name  &amp;quot;&#039;&#039;John Doe&#039;&#039;&amp;quot;&lt;br /&gt;
 $ git config --global user.email &amp;quot;&#039;&#039;johndoe@foobar.com&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
他の設定については [[#高度な設定]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
== 基本的な使い方 ==&lt;br /&gt;
&lt;br /&gt;
このチュートリアルでは Git によるプロジェクトの基本的な分散バージョン管理について説明します。典型的な Git のワークフローは以下の通りです:&lt;br /&gt;
&lt;br /&gt;
# 新しいプロジェクトを作成、またはリモートのプロジェクトを複製する。&lt;br /&gt;
# ブランチを作成して変更を加え、変更をコミットする。&lt;br /&gt;
# コミットを統合して上手くまとめて分かりやすくする。&lt;br /&gt;
# メインのブランチにコミットをマージする。&lt;br /&gt;
# (任意) 変更をリモートサーバーにプッシュする。&lt;br /&gt;
&lt;br /&gt;
=== ローカルリポジトリ ===&lt;br /&gt;
&lt;br /&gt;
==== ステージング ====&lt;br /&gt;
&lt;br /&gt;
新しいリポジトリを作成:&lt;br /&gt;
&lt;br /&gt;
 $ git init&lt;br /&gt;
&lt;br /&gt;
リポジトリの変更を記録するには、先に&#039;&#039;インデックス&#039;&#039;または&#039;&#039;ステージングエリア&#039;&#039; (&#039;&#039;ステージング&#039;&#039;とも呼ばれます) に変更を追加する必要があります。ファイルを追加するには:&lt;br /&gt;
&lt;br /&gt;
 $ git add &#039;&#039;file1&#039;&#039; &#039;&#039;file2&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ファイルを全て追加:&lt;br /&gt;
&lt;br /&gt;
 $ git add .&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|git add .}} などのコマンドでファイルを無視するようにしたい場合、{{ic|.gitignore}} ファイルを作成してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|.gitignore|&lt;br /&gt;
# File I&#039;ll likely delete&lt;br /&gt;
test-script&lt;br /&gt;
&lt;br /&gt;
# Ignore all .html files, except &#039;important.html&#039;&lt;br /&gt;
*.html&lt;br /&gt;
!important.html&lt;br /&gt;
&lt;br /&gt;
# Ignore all files recursively in &#039;DoNotInclude&#039;&lt;br /&gt;
DoNotInclude/**&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
詳しくは [http://git-scm.com/docs/gitignore gitignore(5)] を参照。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ステージングからファイルを削除 ({{ic|--cached}} を付けるとファイルを実際には削除しません):&lt;br /&gt;
&lt;br /&gt;
 $ git rm &#039;&#039;(--cached)&#039;&#039; &#039;&#039;file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ファイルを全て削除:&lt;br /&gt;
&lt;br /&gt;
 $ git rm --cached -r .&lt;br /&gt;
&lt;br /&gt;
または:&lt;br /&gt;
&lt;br /&gt;
 $ git reset HEAD -- .&lt;br /&gt;
&lt;br /&gt;
上記の {{ic|HEAD}} は現在の版の「シンボル参照」です。&lt;br /&gt;
&lt;br /&gt;
ファイルの名前を変更:&lt;br /&gt;
&lt;br /&gt;
 $ git mv &#039;&#039;file1&#039;&#039; &#039;&#039;file2&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ファイルのリストを表示:&lt;br /&gt;
&lt;br /&gt;
 $ git ls-files&lt;br /&gt;
&lt;br /&gt;
上記のコマンドはデフォルトでステージングエリアのファイルを表示します ({{ic|--cached}} ファイル)。&lt;br /&gt;
&lt;br /&gt;
==== 変更をコミット ====&lt;br /&gt;
&lt;br /&gt;
コンテンツを&#039;&#039;ステージング&#039;&#039;に記録したら、次のコマンドでコミットします:&lt;br /&gt;
&lt;br /&gt;
 $ git commit -m &amp;quot;&#039;&#039;First commit.&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{ic|-m}}, {{ic|--message}} オプションを使うことで短いメッセージを残せます: オプションを省略した場合、事前に設定していたエディタが起動して長いメッセージを書くことができます。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* 小さい変更でも頻繁にコミットを行ってちゃんとしたメッセージを書くようにしましょう。&lt;br /&gt;
* 編集を加えたファイルを全てインデックスに追加して、それらをコミットするのは一つのコマンドで実行できます ({{ic|-a}} は {{ic|--all}} の略式):&lt;br /&gt;
&lt;br /&gt;
 $ git commit -am &amp;quot;&#039;&#039;First commit.&#039;&#039;&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
過去に戻ってコミットメッセージを編集:&lt;br /&gt;
&lt;br /&gt;
 $ git commit --amend -m &amp;quot;&#039;&#039;Message.&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
この記事で使われるコマンドの多くはコミットを引数として指定します。コミットは以下の形式のどれかで指定することが可能です:&lt;br /&gt;
&lt;br /&gt;
* 40文字の SHA-1 ハッシュ (大抵は最初の7文字くらいで一意に識別できます)。&lt;br /&gt;
* ブランチやタグの名前といったコミットのラベル。&lt;br /&gt;
* {{ic|HEAD}} ラベルはチェックアウトされた最新のコミットを示します ({{ic|git checkout}} を使って古いコミットまで歴史を戻していない限り、ブランチの頭になります)。&lt;br /&gt;
* 上記に加えて {{ic|~}} を付けることで前のコミットを指定できます。例えば、{{ic|HEAD~}} は {{ic|HEAD}} の一つ前のコミット、{{ic|HEAD~5}} は {{ic|HEAD}} の五つ前のコミットを指します。&lt;br /&gt;
&lt;br /&gt;
==== 変更を閲覧 ====&lt;br /&gt;
&lt;br /&gt;
コミット間の差分を表示:&lt;br /&gt;
&lt;br /&gt;
 $ git diff HEAD HEAD~3&lt;br /&gt;
&lt;br /&gt;
ステージングエリアと作業ツリーの差分を表示:&lt;br /&gt;
&lt;br /&gt;
 $ git diff&lt;br /&gt;
&lt;br /&gt;
変更の要点を表示:&lt;br /&gt;
&lt;br /&gt;
 $ git status&lt;br /&gt;
&lt;br /&gt;
変更の履歴を表示 (&amp;quot;&#039;&#039;-N&#039;&#039;&amp;quot; は表示する直近のコミット数):&lt;br /&gt;
&lt;br /&gt;
 $ git log &#039;&#039;(-N)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== ブランチの作成 ====&lt;br /&gt;
&lt;br /&gt;
基本的に、修正や新しい機能などはブランチでテストします。変更が問題ないようだったら、デフォルトのブランチ (master) にマージします。ブランチを作成するときは、目的に適った名前を付けて下さい:&lt;br /&gt;
&lt;br /&gt;
 $ git branch &#039;&#039;help-section-addition&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ブランチを一覧:&lt;br /&gt;
&lt;br /&gt;
 $ git branch&lt;br /&gt;
&lt;br /&gt;
ブランチを切り替え:&lt;br /&gt;
&lt;br /&gt;
 $ git checkout &#039;&#039;branch&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ブランチを作成して切り替え:&lt;br /&gt;
&lt;br /&gt;
 $ git checkout -b &#039;&#039;branch&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ブランチを master ブランチにマージ:&lt;br /&gt;
&lt;br /&gt;
 $ git checkout master&lt;br /&gt;
 $ git merge &#039;&#039;branch&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
変更が衝突しない場合はマージされます。衝突する場合は衝突箇所が記録されます。{{ic|git diff}} を使ってどこで衝突しているのか確認することができるので、手動で衝突の解消をする必要があります。&lt;br /&gt;
&lt;br /&gt;
ブランチが不要になったら、次のコマンドで&#039;&#039;削除&#039;&#039;します:&lt;br /&gt;
&lt;br /&gt;
 $ git branch -d &#039;&#039;branch&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== 共同作業 ===&lt;br /&gt;
&lt;br /&gt;
==== エチケット ====&lt;br /&gt;
&lt;br /&gt;
* 既存のプロジェクトに貢献しようと考えた場合、プロジェクトのライセンスを確認しましょう。コードの変更についてかなり制限がかけられている場合もあります。ライセンスによっては、コードの所有権について論争が生まれることも考えられます。&lt;br /&gt;
* プロジェクトのコミュニティを観測してどうやったら適合できるか考えましょう。プロジェクトの方向性を理解するために、ドキュメントやリポジトリの[[#履歴とバージョニング|ログ]]を読むのも大切です。&lt;br /&gt;
* コミットを pull するようにリクエストしたり、パッチを送るときは、できるかぎりパッチを短くして説明を付加するようにしましょう。メンテナがあなたの変更箇所を理解するための手助けとなり、マージするか、もしくは修正を加えるよう要求すべきか判断する基準にもなります。&lt;br /&gt;
* リジェクトされたとしても、落胆する必要はありません。所詮他人のプロジェクトです。リクエストが重要な場合、出来るかぎり分かりやすく根気よくリクエストの理由を説明しましょう。いつかは解決に導かれるはずです。&lt;br /&gt;
&lt;br /&gt;
==== リポジトリを複製 ====&lt;br /&gt;
&lt;br /&gt;
プロジェクトへの貢献を始めるには、まずリポジトリを &#039;&#039;clone&#039;&#039; します:&lt;br /&gt;
&lt;br /&gt;
 $ git clone &#039;&#039;location&#039;&#039; &#039;&#039;folder&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;location&#039;&#039;}} はパスでもネットワークアドレスでもかまいません。また、複製が完了すると場所が記録されるので、{{ic|git pull}} だけで複製できるようになります。&lt;br /&gt;
&lt;br /&gt;
==== プルリクエスト ====&lt;br /&gt;
&lt;br /&gt;
変更を加えてコミットしたら、ソフトウェアの作者にマージするように要求することができます。これを「プルリクエスト」と呼びます。&#039;&#039;&#039;pull&#039;&#039;&#039; するには:&lt;br /&gt;
&lt;br /&gt;
 $ git pull &#039;&#039;location&#039;&#039; master&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;pull&#039;&#039; コマンドは &#039;&#039;fetch&#039;&#039; と &#039;&#039;merge&#039;&#039; の組み合わせです。衝突があった場合 (例えば同じ時間帯にソフトウェアの作者が変更を加えた場合)、手動で解消する必要があります。&lt;br /&gt;
&lt;br /&gt;
もしくは、オリジナルの作者は取り込みたい変更を &#039;&#039;&#039;pick&#039;&#039;&#039; することができます。&#039;&#039;fetch&#039;&#039; オプションを使って (そして &#039;&#039;log&#039;&#039; オプションで特殊な {{ic|FETCH_HEAD}} 記号を使用)、プルリクエストの中身を表示してから何をするか決められます:&lt;br /&gt;
&lt;br /&gt;
 $ git fetch &#039;&#039;location&#039;&#039; master&lt;br /&gt;
 $ git log -p HEAD..FETCH_HEAD&lt;br /&gt;
 $ git merge &#039;&#039;location&#039;&#039; master&lt;br /&gt;
&lt;br /&gt;
==== リモートの使用 ====&lt;br /&gt;
&lt;br /&gt;
リモートは追跡しているリポジトリです。&#039;&#039;label&#039;&#039; で場所を定義します。大抵は頻繁にアクセスするリポジトリで使われます。リモートを作成:&lt;br /&gt;
&lt;br /&gt;
 $ git remote add &#039;&#039;label&#039;&#039; &#039;&#039;location&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
リモートを取得:&lt;br /&gt;
&lt;br /&gt;
 $ git fetch &#039;&#039;label&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
マスターとリモートのマスターの変更点を表示:&lt;br /&gt;
&lt;br /&gt;
 $ git log -p master..&#039;&#039;label&#039;&#039;/master&lt;br /&gt;
&lt;br /&gt;
現在のリポジトリのリモートを表示:&lt;br /&gt;
&lt;br /&gt;
 $ git remote -v&lt;br /&gt;
&lt;br /&gt;
フォーク元 (先行プロジェクト) のリモートを定義するときは &#039;&#039;upstream&#039;&#039; として定義します。&lt;br /&gt;
&lt;br /&gt;
==== リポジトリにプッシュ ====&lt;br /&gt;
&lt;br /&gt;
ソフトウェアの作者から権限を与えられたら、変更を &#039;&#039;&#039;push&#039;&#039;&#039; することができます:&lt;br /&gt;
&lt;br /&gt;
 $ git push &#039;&#039;location&#039;&#039; &#039;&#039;branch&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|git clone}} が実行されると、オリジナルの URL が記録され {{ic|origin}} というリモート名が与えられます。大抵の場合は以下のようにしてプッシュできます:&lt;br /&gt;
&lt;br /&gt;
 $ git push origin master&lt;br /&gt;
&lt;br /&gt;
{{ic|-u}} ({{ic|--set-upstream-to}}) オプションを使用すると、位置が記録されて次回からは {{ic|git push}} だけでも実行できます。&lt;br /&gt;
&lt;br /&gt;
==== マージの対処 ====&lt;br /&gt;
&lt;br /&gt;
マージの衝突を解決する方法は Git Book の [http://git-scm.com/book/ja/v2/Git-%E3%81%AE%E3%83%96%E3%83%A9%E3%83%B3%E3%83%81%E6%A9%9F%E8%83%BD-%E3%83%96%E3%83%A9%E3%83%B3%E3%83%81%E3%81%A8%E3%83%9E%E3%83%BC%E3%82%B8%E3%81%AE%E5%9F%BA%E6%9C%AC#%E3%83%9E%E3%83%BC%E3%82%B8%E6%99%82%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%95%E3%83%AA%E3%82%AF%E3%83%88 マージ時のコンフリクト] を見てください。マージは基本的に可逆です。{{ic|--abort}} コマンドを使うことでマージを取り消すことができます (例: {{ic|git merge --abort}} または {{ic|git pull --abort}})。&lt;br /&gt;
&lt;br /&gt;
==== メーリングリストにパッチを送信 ====&lt;br /&gt;
&lt;br /&gt;
メーリングリストに直接パッチを送る場合、次のパッケージをインストールする必要があります: {{Pkg|perl-authen-sasl}}, {{Pkg|perl-net-smtp-ssl}}, {{Pkg|perl-mime-tools}}。&lt;br /&gt;
&lt;br /&gt;
ユーザー名とメールアドレスを設定したか確認してください、[[#基本設定]]を参照。&lt;br /&gt;
&lt;br /&gt;
メールアドレスを設定:&lt;br /&gt;
&lt;br /&gt;
 $ git config --global sendemail.smtpserver &#039;&#039;smtp.gmail.com&#039;&#039;&lt;br /&gt;
 $ git config --global sendemail.smtpserverport &#039;&#039;587&#039;&#039;&lt;br /&gt;
 $ git config --global sendemail.smtpencryption &#039;&#039;tls&#039;&#039;&lt;br /&gt;
 $ git config --global sendemail.smtpuser &#039;&#039;foobar@gmail.com&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
これでメーリングリストにパッチを送信することができます ([http://www.openembedded.org/wiki/How_to_submit_a_patch_to_OpenEmbedded#Sending_patches OpenEmbedded:How to submit a patch to OpenEmbedded#Sending patches] を参照):&lt;br /&gt;
&lt;br /&gt;
 $ git add &#039;&#039;filename&#039;&#039;&lt;br /&gt;
 $ git commit -s&lt;br /&gt;
 $ git send-email --to=&#039;&#039;openembedded-core@lists.openembedded.org&#039;&#039; --confirm=always -M -1&lt;br /&gt;
&lt;br /&gt;
=== 履歴とバージョニング ===&lt;br /&gt;
&lt;br /&gt;
==== 履歴の検索 ====&lt;br /&gt;
&lt;br /&gt;
{{ic|git log}} では履歴とコミットのチェックサムや作者、日付、ショートメッセージを表示します。チェックサムはコミットオブジェクトのオブジェクト名であり、通常は40文字の SHA-1 ハッシュになります。履歴とロングメッセージを表示するには (&amp;quot;&#039;&#039;checksum&#039;&#039;&amp;quot; は一意であるかぎり短く省略できます):&lt;br /&gt;
&lt;br /&gt;
 $ git show (&#039;&#039;checksum&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
追跡されているファイルをパターン検索:&lt;br /&gt;
&lt;br /&gt;
 $ git grep &#039;&#039;pattern&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;{{ic|.c}}&#039;&#039;&#039; と &#039;&#039;&#039;{{ic|.h}}&#039;&#039;&#039; ファイルを検索:&lt;br /&gt;
&lt;br /&gt;
 $ git grep &#039;&#039;pattern&#039;&#039; -- &#039;*.[ch]&#039;&lt;br /&gt;
&lt;br /&gt;
==== バージョニングとリリース ====&lt;br /&gt;
&lt;br /&gt;
コミットにタグを付ける:&lt;br /&gt;
&lt;br /&gt;
 $ git tag 2.14 &#039;&#039;checksum&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
タグは一般的に [https://www.drupal.org/node/1066342 リリースやバージョニング] するときに付けられますが文字列は何でもかまいません。通常は Git データベースに追加される注釈付きタグが用いられます。最新のコミットにタグを付けるには:&lt;br /&gt;
&lt;br /&gt;
 $ git tag -a 2.14 -m &amp;quot;Version 2.14&amp;quot;&lt;br /&gt;
&lt;br /&gt;
タグを確認:&lt;br /&gt;
&lt;br /&gt;
 $ git tag -l&lt;br /&gt;
&lt;br /&gt;
タグを削除:&lt;br /&gt;
&lt;br /&gt;
 $ git tag -d 2.08&lt;br /&gt;
&lt;br /&gt;
タグを更新:&lt;br /&gt;
&lt;br /&gt;
 $ git push --tags&lt;br /&gt;
&lt;br /&gt;
==== コミットの修正 ====&lt;br /&gt;
&lt;br /&gt;
プルリクエストを送信する前に、コミットを整理・統合するのが望ましいことがあります。{{ic|git rebase}} のインタラクティブオプションを使います:&lt;br /&gt;
&lt;br /&gt;
 $ git rebase -i &#039;&#039;checksum&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
コマンドを実行すると指定された範囲のコミットが全てエディタで開かれます。上記の場合、最新のコミット ({{ic|HEAD}}) から {{ic|&#039;&#039;checksum&#039;&#039;}} コミットまでが開かれます。数字で指定する場合、例えば {{ic|HEAD~3}} なら最後の3つのコミットがリベースされます:&lt;br /&gt;
&lt;br /&gt;
 pick d146cc7 Mountpoint test.&lt;br /&gt;
 pick 4f47712 Explain -o option in readme.&lt;br /&gt;
 pick 8a4d479 Rename documentation.&lt;br /&gt;
&lt;br /&gt;
最初のカラムに rebase で実行する動作を記述します。以下から選んでください:&lt;br /&gt;
&lt;br /&gt;
* {{ic|pick}} — コミットをそのまま適用します (デフォルト)。&lt;br /&gt;
* {{ic|edit}} — ファイルやコミットメッセージを編集。&lt;br /&gt;
* {{ic|reword}} — コミットメッセージを編集。&lt;br /&gt;
* {{ic|squash}} — 前のコミットにマージ。&lt;br /&gt;
* {{ic|fixup}} — 前のコミットにマージ。メッセージは破棄。&lt;br /&gt;
&lt;br /&gt;
コミットの順番を変えたり履歴から消去することが可能です (ただし注意して操作してください)。ファイルの編集後、Git は指示された作業を実施します。マージ時の問題を解決するように要求された場合、修正してから {{ic|git rebase --continue}} で続行するか、{{ic|git rebase --abort}} コマンドで中止してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|コミットの squash はローカルコミットでのみ使います。他人と共有しているリポジトリで使うと問題が発生します。}}&lt;br /&gt;
&lt;br /&gt;
== 高度な設定 ==&lt;br /&gt;
&lt;br /&gt;
Git は INI タイプの設定ファイルから設定を読み込みます:&lt;br /&gt;
&lt;br /&gt;
* 各リポジトリにはリポジトリごとの設定を記述した {{ic|.git/config}} ファイルが含まれます。&lt;br /&gt;
* 各ユーザーの {{ic|$HOME/.gitconfig}} ファイルがフォールバックとして使われます。&lt;br /&gt;
* システム全体のデフォルト設定としては {{ic|/etc/gitconfig}} が使われます。&lt;br /&gt;
&lt;br /&gt;
上記のファイルは直接編集できますが、通常は下の例にあるように {{ic|git config}} を使います。&lt;br /&gt;
&lt;br /&gt;
現在設定されている変数を確認:&lt;br /&gt;
&lt;br /&gt;
 $ git config {--local,--global,--system} --list&lt;br /&gt;
&lt;br /&gt;
デフォルトエディタを [[vim]] から [[nano]] に設定:&lt;br /&gt;
&lt;br /&gt;
 $ git config --global core.editor &amp;quot;nano -w&amp;quot;&lt;br /&gt;
&lt;br /&gt;
デフォルトのプッシュアクションを設定:&lt;br /&gt;
&lt;br /&gt;
 $ git config --global push.default simple&lt;br /&gt;
&lt;br /&gt;
{{ic|git difftool}} で使用するツールを設定 (デフォルトでは &#039;&#039;meld&#039;&#039; になっています):&lt;br /&gt;
&lt;br /&gt;
 $ git config --global diff.tool vimdiff&lt;br /&gt;
&lt;br /&gt;
詳しくは [https://www.kernel.org/pub/software/scm/git/docs/git-config.html git-config(1)] や [http://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration Git Configuration] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== 認証の高速化 ===&lt;br /&gt;
&lt;br /&gt;
Git サーバーにプッシュする度に認証が面倒なのをなんとかしたいと思っている場合、以下を使って下さい。&lt;br /&gt;
&lt;br /&gt;
* SSH 鍵を使って認証している場合、[[SSH 鍵#SSH エージェント|SSH エージェント]]を使って下さい。[[SSH#SSH の高速化]] や [[SSH#Keep alive]] も参照。&lt;br /&gt;
* ユーザー名とパスワードを使って認証している場合、サーバーが SSH をサポートしているなら [[SSH 鍵]]に切り替えてください。もしくは [https://git-scm.com/docs/git-credential-cache git-credential-cache] や [https://git-scm.com/docs/git-credential-store git-credential-store] を使ってみて下さい。&lt;br /&gt;
&lt;br /&gt;
=== デフォルトプロトコル ===&lt;br /&gt;
&lt;br /&gt;
上述のように SSH で多重接続することで、Git over SSH の方が HTTPS よりも高速になります。また、(AUR など) サーバーによっては SSH を介して push することもできます。例えば、以下の設定をすると AUR でホストされているリポジトリで Git over SSH を設定します。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.gitconfig|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[url &amp;quot;ssh://aur@aur.archlinux.org/&amp;quot;]&lt;br /&gt;
	insteadOf &amp;amp;#61; https://aur.archlinux.org/&lt;br /&gt;
	insteadOf &amp;amp;#61; http://aur.archlinux.org/&lt;br /&gt;
	insteadOf &amp;amp;#61; git://aur.archlinux.org/&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== Bash 補完 ===&lt;br /&gt;
&lt;br /&gt;
Bash の補完を有効にするには、[[Bash#設定ファイル|Bash のスタートアップファイル]]で {{ic|/usr/share/git/completion/git-completion.bash}} を source してください。もしくは、{{pkg|bash-completion}} をインストールしてください。&lt;br /&gt;
&lt;br /&gt;
=== Git プロンプト ===&lt;br /&gt;
&lt;br /&gt;
Git パッケージにはプロンプトスクリプトが付属しています。プロンプトを有効にするには、[[自動起動#シェル|シェルのスタートアップファイル]]で {{ic|/usr/share/git/completion/git-prompt.sh}} スクリプトを source して、{{ic|%s}} パラメータでカスタムプロンプトを設定してください:&lt;br /&gt;
&lt;br /&gt;
* [[Bash]] の場合: {{ic|1=PS1=&#039;[\u@\h \W$(__git_ps1 &amp;quot; (%s)&amp;quot;)]\$ &#039;}}&lt;br /&gt;
* [[zsh]] の場合: {{ic|1=PS1=&#039;[%n@%m %c$(__git_ps1 &amp;quot; (%s)&amp;quot;)]\$ &#039;}}&lt;br /&gt;
&lt;br /&gt;
Git リポジトリのディレクトリに移動すると、プロンプトはブランチの名前を表示するようになります。他の情報もプロンプトに表示させるよう設定できます:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |+&lt;br /&gt;
 ! シェル変数 !! 情報&lt;br /&gt;
 |-&lt;br /&gt;
 | GIT_PS1_SHOWDIRTYSTATE     || ステージ済みの場合は &#039;&#039;&#039;+&#039;&#039;&#039;、未ステージの場合は &#039;&#039;&#039;*&#039;&#039;&#039;。&lt;br /&gt;
 |-&lt;br /&gt;
 | GIT_PS1_SHOWSTASHSTATE     || スタッシュが存在する場合は &#039;&#039;&#039;$&#039;&#039;&#039;。&lt;br /&gt;
 |-&lt;br /&gt;
 | GIT_PS1_SHOWUNTRACKEDFILES || 追跡されていないファイルが存在する場合は &#039;&#039;&#039;%&#039;&#039;&#039;。&lt;br /&gt;
 |-&lt;br /&gt;
 | GIT_PS1_SHOWUPSTREAM       || 上流からの進み・戻り・分岐 (&#039;&#039;&#039;&amp;lt;,&amp;gt;,&amp;lt;&amp;gt;&#039;&#039;&#039;)。&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
変更を適用するには {{ic|GIT_PS1_SHOWUPSTREAM}} を {{ic|auto}} に設定する必要があります。&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|$(__git_ps1)}} が {{ic|((unknown))}} と返す場合、何もリポジトリが含まれていない {{ic|.git}} フォルダがカレントディレクトリに存在します。そのために Git が認識しなくなっています。{{ic|~/.gitconfig}} ではなく間違って {{ic|~/.git/config}} に Git の設定ファイルを作成した場合などに発生します。}}&lt;br /&gt;
&lt;br /&gt;
もしくは、{{AUR|bash-git-prompt}} や {{AUR|gittify}} など [[AUR]] にある git シェルプロンプトのカスタマイズパッケージを利用することもできます。&lt;br /&gt;
&lt;br /&gt;
== 高度な使い方 ==&lt;br /&gt;
&lt;br /&gt;
変更量を視覚的に表示するには:&lt;br /&gt;
&lt;br /&gt;
 $ git diff --stat&lt;br /&gt;
&lt;br /&gt;
{{ic|git log}} でフォークを表示:&lt;br /&gt;
&lt;br /&gt;
 $ git log --graph --oneline --decorate&lt;br /&gt;
&lt;br /&gt;
{{ic|git log}} のグラフエイリアス ({{ic|git graph}} の表示が綺麗になります):&lt;br /&gt;
&lt;br /&gt;
 $ git config --global alias.graph &#039;log --graph --oneline --decorate&#039;&lt;br /&gt;
&lt;br /&gt;
前のコミットにリセット (非常に危険なコマンドです。コミットで行われた変更が全て消去されます):&lt;br /&gt;
&lt;br /&gt;
 $ git reset --hard HEAD^&lt;br /&gt;
&lt;br /&gt;
リポジトリのアドレスが変更された場合、リモートアドレスを更新する必要があります:&lt;br /&gt;
&lt;br /&gt;
 $ git remote set-url origin git@&#039;&#039;address&#039;&#039;:&#039;&#039;user&#039;&#039;/&#039;&#039;repo&#039;&#039;.git&lt;br /&gt;
&lt;br /&gt;
{{Note|gpg 署名で pinentry curses を使うには {{ic|1=export GPG_TTY=$(tty)}} (もしくは pinentry-tty を使用) を実行する必要があります。実行していないと gpg がロック状態の場合に署名が失敗します (pin の要求ができないためです)。}}&lt;br /&gt;
&lt;br /&gt;
Signed-off-by 行を追加 (プロジェクトによってはコミットに名前・メール署名の追加を必要とする場合があります):&lt;br /&gt;
&lt;br /&gt;
  $ git commit -s&lt;br /&gt;
&lt;br /&gt;
パッチに Signed-off-by を自動で追加 ({{ic|git format-patch &#039;&#039;commit&#039;&#039;}} を使用したとき):&lt;br /&gt;
&lt;br /&gt;
 $ git config --local format.signoff true&lt;br /&gt;
&lt;br /&gt;
変更を加えたファイルの特定部分をコミット。大量の変更を行ったとき複数のコミットに分けたい場合に有用です:&lt;br /&gt;
&lt;br /&gt;
 $ git add -p&lt;br /&gt;
&lt;br /&gt;
=== マスター以外のブランチで作業 ===&lt;br /&gt;
&lt;br /&gt;
ときに、メンテナからブランチで作業するように要求されることがあります。使われるブランチの名前は {{ic|devel}} や {{ic|testing}} などが一般的です。まずはリポジトリを複製します。&lt;br /&gt;
&lt;br /&gt;
master 以外のブランチを開くには ({{ic|git clone}} で master ブランチしか表示されない場合、{{ic|git branch -a}} で他のブランチを表示できます):&lt;br /&gt;
&lt;br /&gt;
 $ git checkout -b &#039;&#039;branch&#039;&#039; origin/&#039;&#039;branch&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
通常通り編集を行ってください。ただし以下のコマンドを使ってリポジトリツリーを同期させてください:&lt;br /&gt;
&lt;br /&gt;
 $ git pull --all&lt;br /&gt;
 $ git push --all&lt;br /&gt;
&lt;br /&gt;
== Git サーバー ==&lt;br /&gt;
&lt;br /&gt;
様々なプロトコルによるリポジトリへの接続を設定する方法。&lt;br /&gt;
&lt;br /&gt;
=== SSH ===&lt;br /&gt;
&lt;br /&gt;
SSH プロトコルを使うには、まず SSH 公開鍵を設定します。[[SSH 鍵]]のガイドに従って設定してください。SSH サーバーを設定する方法は、[[SSH]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
SSH を動作させて鍵を生成したら、{{ic|~/.ssh/id_rsa.pub}} の中身を {{ic|~/.ssh/authorized_keys}} に貼り付けてください (1行に全て記述)。以下を実行することで SSH で Git リポジトリにアクセスできます:&lt;br /&gt;
&lt;br /&gt;
 $ git clone &#039;&#039;user&#039;&#039;@&#039;&#039;foobar.com&#039;&#039;:&#039;&#039;my_repository&#039;&#039;.git&lt;br /&gt;
&lt;br /&gt;
SSH クライアントの {{ic|StrictHostKeyChecking}} 設定が {{ic|ask}} になっている場合 (デフォルト設定)、SSH は yes/no の確認を表示します。{{ic|yes}} と入力してから {{ic|Enter}} を押してください。それでリポジトリがチェックアウトされます。SSH を使用する場合、コミット権限も得られます。&lt;br /&gt;
&lt;br /&gt;
SSH を使うように既存のリポジトリを設定するには、リモート URL を再定義してください:&lt;br /&gt;
&lt;br /&gt;
 $ git remote set-url origin git@localhost:&#039;&#039;my_repository&#039;&#039;.git&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/ssh/ssh_config}} や {{ic|~/.ssh/config}} の設定によって22番以外のポートに接続できます。リポジトリのポートを設定するには (例: 443):&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.git/config|2=&lt;br /&gt;
[remote &amp;quot;origin&amp;quot;]&lt;br /&gt;
    url = ssh://&#039;&#039;user&#039;&#039;@&#039;&#039;foobar&#039;&#039;.com:443/~&#039;&#039;my_repository&#039;&#039;/repo.git&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Smart HTTP ===&lt;br /&gt;
&lt;br /&gt;
Git は git-http-backend を利用することで SSH や Git プロトコルと同じように HTTP(S) プロトコルを効率的に扱うことができます。リポジトリから clone あるいは pull できるだけでなく、HTTP(S) を使ってリポジトリに push することが可能です。&lt;br /&gt;
&lt;br /&gt;
セットアップは大して難しくありません。Apache ウェブサーバー ({{pkg|apache}} と {{ic|mod_cgi}}, {{ic|mod_alias}}, {{ic|mod_env}}) と {{pkg|git}} をインストール・設定するだけです。&lt;br /&gt;
&lt;br /&gt;
基本的なセットアップが出来たら、Apache の設定ファイルに以下を追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/httpd/conf/httpd.conf|&lt;br /&gt;
&amp;lt;Directory &amp;quot;/usr/lib/git-core*&amp;quot;&amp;gt;&lt;br /&gt;
    Require all granted&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
SetEnv GIT_PROJECT_ROOT /srv/git&lt;br /&gt;
SetEnv GIT_HTTP_EXPORT_ALL&lt;br /&gt;
ScriptAlias /git/ /usr/lib/git-core/git-http-backend/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
上記の設定では Git リポジトリは {{ic|/srv/git}} としています。次のような URL でアクセスします: {{ic|&amp;lt;nowiki&amp;gt;http(s)://your_address.tld/git/your_repo.git&amp;lt;/nowiki&amp;gt;}}。&lt;br /&gt;
&lt;br /&gt;
{{Note|Apache からリポジトリに読み書きできることを確認してください。}}&lt;br /&gt;
&lt;br /&gt;
詳しいドキュメントは以下のリンクを参照:&lt;br /&gt;
* https://www.kernel.org/pub/software/scm/git/docs/git-http-backend.html&lt;br /&gt;
&lt;br /&gt;
=== Git ===&lt;br /&gt;
&lt;br /&gt;
{{Note|Git プロトコルでは読み取りアクセスだけが許可されます。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|git-daemon.socket}} を[[起動|起動・有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
デーモンは以下のオプションで起動します:&lt;br /&gt;
&lt;br /&gt;
 ExecStart=-/usr/lib/git-core/git-daemon --inetd --export-all --base-path=/srv/git&lt;br /&gt;
&lt;br /&gt;
{{ic|/srv/git/}} に置かれたリポジトリがデーモンによって認識されます。次のようなコマンドでクライアントで接続できます:&lt;br /&gt;
&lt;br /&gt;
 $ git clone git://&#039;&#039;location&#039;&#039;/&#039;&#039;repository&#039;&#039;.git&lt;br /&gt;
&lt;br /&gt;
=== アクセス権限の設定 ===&lt;br /&gt;
&lt;br /&gt;
読み書きアクセスを制限したいときは、標準の Unix パーミッションを使います。詳しくは http://sitaramc.github.com/gitolite/doc/overkill.html{{Dead link|2013|11|06}} ([https://web.archive.org/web/20111004134500/http://sitaramc.github.com/gitolite/doc/overkill.html archive.org mirror]) を参照してください。&lt;br /&gt;
&lt;br /&gt;
より細かいアクセス管理については、[[gitolite]] や [[gitosis]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [http://git-scm.com/book Pro Git book]&lt;br /&gt;
* [http://gitref.org/ Git Reference]&lt;br /&gt;
* https://www.kernel.org/pub/software/scm/git/docs/&lt;br /&gt;
* [https://gun.io/blog/how-to-github-fork-branch-and-pull-request Git overall]&lt;br /&gt;
* [http://nathanhoad.net/git-workflow-forks-remotes-and-pull-requests Git overall2]&lt;br /&gt;
* https://wiki.videolan.org/Git&lt;br /&gt;
* [https://gist.github.com/grawity/4392747 GitHub が用意しているプロトコルの比較]&lt;/div&gt;</summary>
		<author><name>Ulaeex</name></author>
	</entry>
</feed>