-
1. 始める
- 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 Smart 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 Replace
- 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 下位コマンドと上位コマンド
- 10.2 Gitオブジェクト
- 10.3 Gitリファレンス
- 10.4 パックファイル
- 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
はグラフィカルな履歴ビューアです。git log
やgit grep
の強力なGUIシェルだと考えてください。これは、過去に何が起こったかを見つけようとしているときや、プロジェクトの履歴を視覚化したいときに使用するツールです。
Gitkはコマンドラインから起動するのが最も簡単です。Gitリポジトリにcd
して、次のように入力します
$ gitk [git log options]
Gitkは多くのコマンドラインオプションを受け入れますが、そのほとんどは基盤となるgit log
アクションに渡されます。おそらく最も便利なオプションの1つは--all
フラグで、これはgitk
にHEADだけでなく任意の参照から到達可能なコミットを表示するように指示します。Gitkのインターフェースは次のようになります

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

git-gui
のコミットツール左側はインデックスです。ステージされていない変更が上部に、ステージされた変更が下部に表示されます。アイコンをクリックすることでファイル全体を2つの状態間で移動させるか、ファイル名をクリックして表示するファイルを選択できます。
右上には差分ビューがあり、現在選択されているファイルの変更が表示されます。この領域で右クリックすることで、個々のハンク(または個々の行)をステージできます。
右下はメッセージとアクション領域です。テキストボックスにメッセージを入力し、「コミット」をクリックすると、git commit
と同様の操作が行われます。また、「Amend」ラジオボタンを選択することで最後のコミットを修正することもできます。これにより、「Staged Changes」領域が最後のコミットの内容で更新されます。その後、いくつかの変更をステージまたはアンステージし、コミットメッセージを変更して、再度「コミット」をクリックすることで、古いコミットを新しいコミットに置き換えることができます。
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動作など、多くの一般的な設定オプションに対して適切なデフォルトが設定されます。
どちらも「常緑型(evergreen)」で、アプリケーションが開いている間にバックグラウンドで更新がダウンロードされ、インストールされます。これにより、Gitのバンドルバージョンも含まれているため、手動で再度更新する心配はほとんどありません。Windowsでは、クライアントにPosh-gitを搭載したPowerShellを起動するショートカットが含まれており、これについてはこの章の後半で詳しく説明します。
次のステップは、このツールに操作するリポジトリを渡すことです。クライアントは、GitHubでアクセスできるリポジトリのリストを表示し、それらをワンステップでクローンできます。既にローカルリポジトリがある場合は、そのディレクトリをFinderまたはWindows ExplorerからGitHubクライアントウィンドウにドラッグするだけで、左側のリポジトリリストに含まれます。
推奨ワークフロー
インストールと設定が完了すれば、GitHubクライアントを多くの一般的なGitタスクに使用できます。このツールの意図されたワークフローは、「GitHub Flow」と呼ばれることがあります。これについてはGitHub Flowで詳しく説明しますが、大まかな内容は、(a) ブランチにコミットすること、(b) リモートリポジトリとかなり定期的に同期すること、です。
ブランチ管理は、これら2つのツールが異なる領域の1つです。macOSでは、新しいブランチを作成するためのボタンがウィンドウの上部にあります

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

ブランチが作成されたら、新しいコミットを行うのは非常に簡単です。作業ディレクトリで変更を加え、GitHubクライアントウィンドウに切り替えると、変更されたファイルが表示されます。コミットメッセージを入力し、含めたいファイルを選択して、「コミット」ボタン(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で入手できます。