DUICUO

Gitグラフィカルインターフェースの使い方の詳細な説明

  [[174704]]

グラフィカルインターフェース

Gitのネイティブ環境はターミナルです。そこではGitの全機能を体験でき、Gitの能力を最大限に発揮できるのはターミナルだけです。しかし、タスクによってはプレーンテキストが最適な選択肢ではない場合があります。視覚的な表現が必要な場合や、クリック可能なインターフェースを好むユーザーもいます。

注目すべき点として、異なるワークフローには異なるインターフェースが設計されている点が挙げられます。一部のクライアント開発者は、効率的と考えるワークフローをサポートするために、Gitの機能のサブセットのみを慎重に選択し、表示しています。各ツールにはそれぞれ固有の目的と重要性があり、この観点から、あるツールが他のツールよりも「優れている」とは言えません。また、グラフィカルクライアントでコマンドラインクライアントでできないことは何もありません。コマンドラインは、リポジトリを完全に制御し、その全機能を発揮できる場所です。

gitk と git-gui

Git をインストールすると、視覚化ツールである gitk と git-gui もインストールされます。

gitkは、プロジェクト履歴をグラフィカルに表示するビューアです。git logコマンドとgit grepコマンドをベースにした強力なグラフィカルインターフェースと考えることができます。このツールは、過去に発生した記録を検索したり、プロジェクト履歴を視覚化したりする必要があるときに役立ちます。

Gitkを使う最も簡単な方法は、コマンドラインから開くことです。Gitリポジトリにcdして、次のように入力するだけです。

  1. `$ gitk [git log オプション]`

Gitkは多くのコマンドラインオプションを受け付けますが、そのほとんどは実行時に基盤となる`git log`に直接渡されます。`--all`はおそらく最も便利なオプションで、HEADだけでなく、あらゆる参照からコミットを検索して表示するようにgitkに指示します。Gitkのインターフェースは次のようになります。

gitk 履歴ビューア

このグラフは「git log --graph」コマンドの出力に似ています。各点はコミット、線は親子関係、色付きの四角は参照を表します。黄色の点はHEAD、赤い点はコミットされていないローカルの変更を表します。下のウィンドウには、現在選択されているコミットの詳細情報が表示されます。左側にはコメントとパッチ、右側には概要が表示されます。中央には、履歴を検索するためのコントロールがあります。

対照的に、git-guiは主にコミットを作成するためのツールです。最も簡単な方法は、コマンドラインからアクセスすることです。

  1. $ git gui

インターフェースは次のようになります。

git-gui コミットツール

左側はインデックスエリアで、ステージングされていない変更は上部に、ステージングされた変更は下部に表示されます。ファイル名の左側にあるアイコンをクリックすると、ファイルのステージング済みと未ステージの状態を切り替えることができます。また、ファイル名を選択して詳細を表示することもできます。

右側のウィンドウの上部には、現在選択されているファイルの変更内容が差分形式で表示されます。ブロックまたは行を右クリックすると、一時保存領域に追加できます。

右側のウィンドウの下部は、ログの書き込みやアクションの実行を行う場所です。テキストボックスにログを入力して「コミット」をクリックすると、`git commit` を実行するのと同じような操作が行えます。以前のコミットを修正したい場合は、「修正」ボタンを選択すると、以前のコミットの内容が「ステージングエリア」に表示されます。その後、変更内容のステージングとステージ解除、コミットログの更新を簡単に行うことができます。最後に「コミット」をクリックすると、以前のコミットが新しいコミットで上書きされます。

gitkとgit-guiは、特定のタスク向けに設計されたツールの例です。これらは、履歴の閲覧やコミットの実行など、異なる目的に合わせて最適化されており、不要な機能は省略されています。

Mac と Windows 上の GitHub クライアント

GitHubは、ワークフロー指向のGitクライアントを2つリリースしました。1つはWindows用、もう1つはMac用です。これらは、ワークフロー指向のツールのあるべき姿を巧みに示しています。Gitの機能を全て実装するのではなく、頻繁に使用される機能の改善と、それらのコラボレーションにおける使いやすさに重点を置いています。クライアントの外観は以下のとおりです。

GitHub Macクライアント

GitHub Windowsクライアント

設計段階では、両方の製品の外観と操作性の一貫性を維持するよう努めました。そのため、この章ではこれらを単一の製品として扱います。ツールのすべての機能については(ドキュメントに記載されているため)詳しく説明しません。ただし、「変更」ウィンドウ(ほとんどの時間を使用する場所)から、以下の点を簡単に理解しておいてください。

  • 左側には追跡中のリポジトリのリストがあります。左上隅の「+」アイコンをクリックすると、追跡するリポジトリを追加できます (クローンを作成するか、ローカルに追加します)。
  • 中央にはコミット/送信エリアがあり、ここでコミットログを入力し、コミットするファイルを選択できます。(Windows では、このエリアの下にコミット履歴が表示されます。Mac では、コミット履歴は別のウィンドウに表示されます。)
  • 右側には編集ビュー領域があり、作業ディレクトリで何が変更されたか (編集モード) または選択したコミットに含まれる変更内容 (履歴モード) が表示されます。
  • ***右上隅にある「同期」ボタンに慣れる必要があります。このボタンは、オンライン インタラクションに使用するメイン ボタンです。

注:これらのツールを使用するのにGitHubアカウントは必要ありません。これらのツールはGitHubの推奨ワークフローに基づいて設計されており、GitHubサービスのエクスペリエンスを向上させるための機能も備えていますが、どのGitリポジトリでも問題なく動作し、ネットワーク経由で任意のGitホストに接続できます。

インストール

GitHubのWindowsクライアントはhttps://windows.github.comから、Macクライアントはhttps://mac.github.comからダウンロードできます。ソフトウェアを初めて起動すると、名前やメールアドレスの設定など、一連のユーザー設定をガイドする画面が表示されます。また、認証情報のキャッシュやCRLFの処理など、よく使用されるデフォルト設定も自動的に調整されます。

これらはすべて「グリーンソフトウェア」です。ソフトウェアを起動してアップデートが見つかると、アップグレードパッケージのダウンロードとインストールがバックグラウンドで完了します。利便性を考慮し、Gitリポジトリも含まれているため、一度インストールすれば、アップグレードについて心配する必要はありません。Windowsクライアントには、Posh-gitプラグインをインストールしたPowerShellを起動するためのショートカットも用意されています。このプラグインについては、この章の後半で詳しく説明します。

次に、作業用リポジトリをいくつか設定します。クライアントには、GitHub上でアクセス権限を持つリポジトリのリストが表示されます。リポジトリを1つ選択し、クリック1つでクローンできます。既にローカルにリポジトリがある場合は、FinderまたはWindowsエクスプローラーからGitHubクライアントウィンドウにドラッグするだけで、左側のリポジトリリストに追加されます。

推奨ワークフロー

インストールと設定が完了したら、GitHubクライアントを使用して一般的なGitタスクを実行できます。このツールが推奨するワークフローは「GitHubフロー」と呼ばれることもあります。GitHubフローのセクションで詳しく説明しますが、その主なポイントは、(a) ブランチにコミットすること、(b) リモートリポジトリと頻繁に同期する必要があることです。

2つのプラットフォームにおけるクライアント実装は、ブランチ管理に関して異なります。Macでは、ブランチを作成するボタンはウィンドウの上部にあります。

[[174706]]

図 1-5. Mac の「ブランチを作成」ボタン。

Windows では、ブランチ切り替えウィジェットにブランチの名前を入力して新しいブランチを作成できます。

Windowsでブランチを作成する

ブランチを作成したら、新しいコミットの作成は非常に簡単かつ明瞭になります。作業ディレクトリでいくつか変更を加えたら、GitHubクライアントウィンドウに切り替えて変更内容を表示します。コミットメッセージを入力し、このコミットに含めるファイルを選択して、「コミット」ボタンをクリックします(キーボードのCtrl+Enterキーまたは⌘+Enterキーを押すこともできます)。

「同期」機能は、ネットワーク上の他のリポジトリとやり取りするための主要な方法です。プッシュ、フェッチ、マージ、リベースはGit内部では独立した一連の操作ですが、GitHubクライアントはこれらの操作を1つの機能に統合します。「同期」ボタンをクリックすると、実際には以下のアクションが実行されます。

  • `git pull --rebase`。上記のコマンドがマージの競合により失敗した場合は、`git pull --no-rebase` にフォールバックします。
  • git プッシュ。

推奨されるワークフローに従う場合、これらは最もよく使用されるコマンドなので、これらを 1 つにまとめると、作業がはるかに簡単になります。

まとめ

これらのツールはそれぞれのワークフローに合わせてカスタマイズされており、開発者と非開発者の両方が数分で簡単に共同プロジェクト環境を構築できます。また、ベストプラクティスをサポートするその他の組み込み機能も備えています。ただし、ワークフローが異なる場合や、ネットワーク操作の実行時に高度な制御が必要な場合は、他のクライアントやコマンドラインの使用を検討することをお勧めします。

その他のグラフィカルインターフェース

これらに加えて、単機能のカスタムツールからGitの全機能を提供しようとする複雑なアプリケーションまで、数多くのグラフィカルGitクライアントが存在します。Gitの公式サイトでは、現在人気のクライアントのリストが公開されています: http://git-scm.com/downloads/guis。より包括的なリストは、Git Wikiでご覧いただけます: https://git.wiki.kernel.org/index.php/Interfaces,_frontends,_and_tools#Graphical_Interfaces。