-
1. Gitを始めるにあたって
- 1.1 バージョン管理について
- 1.2 Gitの歴史
- 1.3 Gitとは何か?
- 1.4 コマンドライン
- 1.5 Gitのインストール
- 1.6 Gitの初回セットアップ
- 1.7 ヘルプの利用
- 1.8 まとめ
-
2. Gitの基本
- 2.1 Gitリポジトリの取得
- 2.2 リポジトリへの変更の記録
- 2.3 コミット履歴の表示
- 2.4 元に戻す操作
- 2.5 リモートでの作業
- 2.6 タグ付け
- 2.7 Gitエイリアス
- 2.8 まとめ
-
3. Gitのブランチ機能
- 3.1 ブランチの基本
- 3.2 基本的なブランチとマージ
- 3.3 ブランチ管理
- 3.4 ブランチワークフロー
- 3.5 リモートブランチ
- 3.6 リベース
- 3.7 まとめ
-
4. サーバー上のGit
- 4.1 プロトコル
- 4.2 サーバーにGitをセットアップする
- 4.3 SSH公開鍵の生成
- 4.4 サーバーのセットアップ
- 4.5 Gitデーモン
- 4.6 スマートHTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 サードパーティのホスティングオプション
- 4.10 まとめ
-
5. 分散Git
- 5.1 分散ワークフロー
- 5.2 プロジェクトへの貢献
- 5.3 プロジェクトの管理
- 5.4 まとめ
-
6. GitHub
- 6.1 アカウントのセットアップと設定
- 6.2 プロジェクトへの貢献
- 6.3 プロジェクトの管理
- 6.4 組織の管理
- 6.5 GitHubのスクリプト
- 6.6 まとめ
-
7. Gitツール
- 7.1 リビジョンの選択
- 7.2 インタラクティブステージング
- 7.3 スタッシュとクリーン
- 7.4 作業に署名する
- 7.5 検索
- 7.6 履歴の書き換え
- 7.7 Resetの解明
- 7.8 高度なマージ
- 7.9 Rerere
- 7.10 Gitを使ったデバッグ
- 7.11 サブモジュール
- 7.12 バンドル
- 7.13 置換
- 7.14 認証情報の保存
- 7.15 まとめ
-
8. Gitのカスタマイズ
- 8.1 Gitの設定
- 8.2 Git属性
- 8.3 Gitフック
- 8.4 Gitによるポリシー適用例
- 8.5 まとめ
-
9. Gitと他のシステム
- 9.1 クライアントとしてのGit
- 9.2 Gitへの移行
- 9.3 まとめ
-
10. Gitの内側
- 10.1 PlumbingとPorcelain
- 10.2 Gitオブジェクト
- 10.3 Gitリファレンス
- 10.4 Packfile
- 10.5 Refspec
- 10.6 転送プロトコル
- 10.7 メンテナンスとデータ復旧
- 10.8 環境変数
- 10.9 まとめ
-
A1. 付録A: 他の環境でのGit
- A1.1 グラフィカルインターフェース
- A1.2 Visual StudioでのGit
- A1.3 Visual Studio CodeでのGit
- A1.4 IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMineでのGit
- A1.5 Sublime TextでのGit
- A1.6 BashでのGit
- A1.7 ZshでのGit
- A1.8 PowerShellでのGit
- A1.9 まとめ
-
A2. 付録B: アプリケーションへのGitの組み込み
- A2.1 コマンドラインGit
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
A3. 付録C: Gitコマンド
- A3.1 セットアップと設定
- A3.2 プロジェクトの取得と作成
- A3.3 基本的なスナップショット
- A3.4 ブランチとマージ
- A3.5 プロジェクトの共有と更新
- A3.6 検査と比較
- A3.7 デバッグ
- A3.8 パッチ適用
- A3.9 メール
- A3.10 外部システム
- A3.11 管理
- A3.12 Plumbingコマンド
A1.1 付録A: その他の環境でのGit - グラフィカルインターフェース
この本を最後まで読んだことで、コマンドラインでGitを使う方法について多くのことを学んだでしょう。ローカルファイルでの作業、ネットワーク経由でのリポジトリの接続、他者との効果的な共同作業ができるようになりました。しかし、話はそこで終わりではありません。Gitは通常、より大きなエコシステムの一部として使われており、ターミナルが常に最適な作業方法とは限りません。次に、Gitが役立つその他の環境の種類と、他のアプリケーション(あなた自身のものも含む)がGitとどのように連携するかを見ていきましょう。
グラフィカルインターフェース
Gitのネイティブ環境はターミナルです。新機能はまずそこに登場し、Gitの全機能はコマンドラインでのみ完全に利用可能です。しかし、プレーンテキストはすべてのタスクにとって最良の選択肢ではありません。時には視覚的な表現が必要な場合もあり、一部のユーザーはポイントアンドクリックインターフェースの方がはるかに快適に感じます。
異なるインターフェースは異なるワークフローに特化していることに注意することが重要です。一部のクライアントは、著者が効果的と考える特定の作業方法をサポートするために、Git機能の慎重にキュレーションされたサブセットのみを公開しています。この観点から見ると、これらのツールのいずれも他のツールよりも「優れている」とは言えず、単にそれぞれの意図された目的に合致しているだけです。また、これらのグラフィカルクライアントができることで、コマンドラインクライアントができないことは何もないことにも注意してください。リポジトリを操作する際に最も強力な機能と制御を持つのは、依然としてコマンドラインです。
gitk
とgit-gui
Gitをインストールすると、視覚ツールであるgitk
とgit-gui
も入手できます。
gitk
はグラフィカルな履歴ビューアです。強力なGUIシェルを介したgit log
とgit grep
のようなものだと考えてください。これは、過去に何が起こったかを見つけたり、プロジェクトの履歴を視覚化したりする際に使用するツールです。
Gitkはコマンドラインから起動するのが最も簡単です。Gitリポジトリにcd
して、次のように入力するだけです。
$ gitk [git log options]
Gitkは多くのコマンドラインオプションを受け入れますが、そのほとんどは基盤となるgit log
アクションに渡されます。おそらく最も有用なのは--all
フラグで、これはgitk
にHEADだけでなく、任意の参照から到達可能なコミットを表示するように指示します。Gitkのインターフェースは次のようになります。

gitk
履歴ビューア上部には、git log --graph
の出力に少し似たものがあります。各ドットはコミットを表し、線は親子の関係を表し、参照は色付きのボックスで示されます。黄色のドットはHEADを表し、赤いドットはまだコミットになっていない変更を表します。下部には選択されたコミットのビューがあり、左側にコメントとパッチ、右側に概要ビューがあります。その間には、履歴を検索するためのコントロールのコレクションがあります。
一方、git-gui
は主にコミットを作成するためのツールです。これもコマンドラインから起動するのが最も簡単です。
$ git gui
そして、それは次のような見た目です。

git-gui
コミットツール左側はインデックスです。ステージされていない変更が上部に、ステージされた変更が下部にあります。アイコンをクリックすると、ファイル全体を2つの状態間で移動でき、ファイル名をクリックすると、表示するファイルを選択できます。
右上は差分ビューで、現在選択されているファイルの変更が表示されます。この領域を右クリックすると、個々のハンク(または個々の行)をステージングできます。
右下はメッセージとアクション領域です。テキストボックスにメッセージを入力し、「Commit」をクリックすると、git commit
に似た操作が実行されます。「Amend」ラジオボタンを選択することで、最後のコミットを修正することもできます。これにより、「Staged Changes」領域が最後のコミットの内容で更新されます。その後、いくつかの変更をステージングまたはアンステージングし、コミットメッセージを変更して、再度「Commit」をクリックすると、古いコミットが新しいコミットに置き換えられます。
gitk
とgit-gui
はタスク指向ツールの例です。それぞれが特定の目的(履歴の表示とコミットの作成)に特化しており、そのタスクに不要な機能は省略されています。
macOSおよびWindows用GitHub
GitHubは、ワークフロー指向のGitクライアントを2つ作成しました。1つはWindows用、もう1つはmacOS用です。これらのクライアントは、ワークフロー指向のツールの良い例です。Gitのすべての機能を公開するのではなく、連携してうまく機能する、厳選された一般的に使用される機能に焦点を当てています。これらは次のような見た目です。


これらは非常によく似た外観と動作をするように設計されているため、この章では単一の製品として扱います。これらのツールの詳細な説明は行いませんが(独自のドキュメントがあります)、主に時間を費やすことになる「変更」ビューの簡単なツアーは適切でしょう。
-
左側にはクライアントが追跡しているリポジトリのリストがあります。このエリアの上部にある「+」アイコンをクリックすると、リポジトリを追加できます(クローンまたはローカルへのアタッチのいずれかで)。
-
中央にはコミット入力領域があり、コミットメッセージを入力し、どのファイルを含めるかを選択できます。Windowsでは、コミット履歴がこのすぐ下に表示されます。macOSでは、別のタブに表示されます。
-
右側には差分ビューがあり、作業ディレクトリで変更された内容、または選択されたコミットに含まれた変更が表示されます。
-
最後に注目すべきは右上にある「Sync」ボタンで、これはネットワーク経由で操作するための主要な方法です。
注
|
これらのツールを使用するためにGitHubアカウントは必要ありません。GitHubのサービスと推奨ワークフローを強調するように設計されていますが、どんなリポジトリでも喜んで機能し、どんなGitホストともネットワーク操作を行います。 |
インストール
WindowsおよびmacOS用GitHubはhttps://desktop.github.com/からダウンロードできます。アプリケーションが最初に実行されると、名前やメールアドレスの設定など、Gitの初回セットアップのすべてを案内し、クレデンシャルキャッシュやCRLF動作など、多くの一般的な設定オプションに適切なデフォルトを設定します。
どちらも「エバーグリーン」であり、アプリケーションが開いている間にバックグラウンドでアップデートがダウンロードおよびインストールされます。これにはバンドルされたGitバージョンが含まれているため、手動で更新する心配はほとんどありません。Windowsでは、クライアントにはPosh-gitでPowerShellを起動するショートカットが含まれており、これについてはこの章の後半で詳しく説明します。
次のステップは、ツールに操作するリポジトリを提供することです。クライアントは、GitHubでアクセスできるリポジトリのリストを表示し、それらを1ステップでクローンできます。すでにローカルリポジトリがある場合は、そのディレクトリをFinderまたはWindowsエクスプローラーからGitHubクライアントウィンドウにドラッグするだけで、左側のリポジトリリストに含まれます。
推奨されるワークフロー
一度インストールして設定すれば、GitHubクライアントを使って多くの一般的なGitタスクを実行できます。このツールの意図するワークフローは、「GitHubフロー」と呼ばれることもあります。GitHubフローでさらに詳しく説明していますが、一般的な趣旨は、(a)ブランチにコミットすること、そして(b)リモートリポジトリとかなり定期的に同期することです。
ブランチ管理は、この2つのツールが異なる領域の1つです。macOSでは、新しいブランチを作成するためのボタンがウィンドウの上部にあります。

Windowsでは、ブランチ切り替えウィジェットに新しいブランチの名前を入力することで行われます。

ブランチが作成されると、新しいコミットの作成は非常に簡単です。作業ディレクトリで変更を行い、GitHubクライアントウィンドウに切り替えると、どのファイルが変更されたかが表示されます。コミットメッセージを入力し、含めたいファイルを選択して、「Commit」ボタンをクリックします(Ctrl+Enterまたは⌘+Enter)。
ネットワークを介して他のリポジトリと対話する主な方法は、「Sync」機能を使用することです。Gitは内部的にプッシュ、フェッチ、マージ、リベースの個別の操作を持っていますが、GitHubクライアントはこれらすべてを1つの多段階機能にまとめています。Syncボタンをクリックしたときに何が起こるかは次のとおりです。
-
git pull --rebase
。マージ競合のためにこれが失敗した場合、git pull --no-rebase
にフォールバックします。 -
git push
.
これはこのスタイルの作業で最も一般的なネットワークコマンドのシーケンスであるため、それらを1つのコマンドにまとめることで多くの時間を節約できます。
まとめ
これらのツールは、設計されたワークフローに非常に適しています。開発者も非開発者も数分以内にプロジェクトで共同作業を開始でき、この種のワークフローのベストプラクティスの多くがツールに組み込まれています。ただし、ワークフローが異なる場合、またはネットワーク操作の方法とタイミングをより細かく制御したい場合は、別のクライアントまたはコマンドラインを使用することをお勧めします。
その他のGUI
他にも多くのグラフィカルなGitクライアントがあり、それらは特殊な単一目的のツールから、Gitができるすべてのことを公開しようとするアプリまで多岐にわたります。公式のGitウェブサイトには、最も人気のあるクライアントの厳選されたリストがhttps://git.dokyumento.jp/downloads/guisにあります。より包括的なリストは、Git wikiサイトのhttps://archive.kernel.org/oldwiki/git.wiki.kernel.org/index.php/Interfaces,_frontends,_and_tools.html#Graphical_Interfacesで入手できます。