Gitは端末をネイティブ環境としています。 Gitの新機能は、まずコマンドラインから利用可能になります。また、Gitのパワーの全てを完全に思い通りに使えるのもコマンドラインからだけです。 しかし、すべてのタスクにおいてプレーンテキストが最良の選択というわけではありません。時には視覚的な表現も必要でしょうし、ポイント&クリック方式のインタフェースの方が好みというユーザもいるでしょう。
なお、それぞれのインタフェースはそれぞれ別のワークフローに合わせて調整されているということには注意が必要です。 クライアントによっては、クライアントの作者が効率的だと考えている特定の作業手順をサポートするため、Gitの機能の中から選び抜かれた一部の機能だけを利用可能としている場合もあります。 この観点から見た場合、あるツールが他のツールと比べて ``よい'' よいうことはありません。各ツールは自身が想定している目的により適合している、というだけです。 また、これらグラフィカルクライアントでは可能で、コマンドラインクライアントでは不可能な処理、というものはありませんので注意してください。リポジトリに対して作業をする場合、コマンドラインが最もパワフルであることに変わりはありません。
Gitをインストールすると、ビジュアルツール gitk
および git-gui
が使えるようになります。
gitk
はグラフィカルな歴史ビューアです。
git log
や git grep
をパワフルなGUIシェルから使えるようにしたようなものだと思ってください。
これは、過去に何が起こったかを検索したり、プロジェクトの歴史を視覚化しようとしているときに使うツールです。
Gitkはコマンドラインから呼び出すのが一番簡単です。
Gitのリポジトリに cd
して、以下のようにタイプしてください。
$ gitk [git logのオプション]
Gitkには多くのコマンドラインオプションがありますが、その多くはGitkの背後にいる git log
アクションに渡されます。
おそらく、最も便利なオプションの一つは --all
フラグでしょう。これはgitkに対し、HEADだけではなく 任意の 参照から到達可能なコミットを表示させるものです。
Gitkのインターフェイスは次のようになっています。
上部には git log --graph
の出力に似た内容が表示されます。各ドットはコミットを、線は親子関係を表しており、参照は色付きの箱として表示されます。
黄色の点はHEADを、赤い点はまだコミットになっていない変更を表しています。
下部には、選択されているコミットの内容が表示されます。コメントやパッチが左側に、概要が右側に表示されます。
真ん中にあるのは歴史の検索に使用するコントロール類です。
一方、 git-gui
は主にコミットを作成するためのツールです。
これも、コマンドラインから起動するのが最も簡単です。
$ git gui
表示内容は次のようになっています。
左側はインデックスです。ステージされていない変更が上に、ステージされた変更が下に表示されます。 アイコンをクリックすると、各ファイルを2つの状態の間で行き来したり、ファイル名をクリックすることで表示するファイルを選択したりできます。
右上に表示されているのは diff で、現在選択されているファイルの変化を示しています。 この領域を右クリックすることで、個々のhunk(または個々の行)をステージングできます。
右下はメッセージとアクションの領域です。テキストボックスにメッセージを入力し、 Commit'' をクリックすれば、
Amend'' ラジオボタンを選択すると、 git commit
と同じようなことができます。
また、 Staged Changes'' 領域に最後のコミットの内容が表示されるので、そのコミットを修正することもできます。
変更をステージしたり、ステージを取り消したり、コミットメッセージを変更したりしたら、
Commit'' を再度クリックすれば古いコミットが新しい内容で更新されます。
gitk
と git-gui
はタスク指向のツールの例です。
特定の目的(それぞれ、履歴の表示と、コミットの作成)に合わせて調整されており、そのタスクに不要な機能は省略されています。
GitHubは、ワークフロー指向のGitクライアントを公開しています。Windows用クライアントと、Mac用クライアントがあります。 これらのクライアントは、ワークフロー指向のツールの良い例です。Gitの機能の すべて を公開するのではなく、よく使われる機能の中から一緒に使うと便利な機能を選択し、それにフォーカスしています。 表示内容は次のようになっています。
この2つは見た目や動作が似たような感じで設計されているので、この章ではひとつの製品として扱うことにします。 ここではツールの詳細な説明はしません(GitHubクライアントの自前のドキュメントがあります)が、 ``changes'' ビュー(ツールの実行時間の大半はここを使うことになると思います)の内容をざっと見ていきましょう。
-
左側には、クライアントが追跡しているリポジトリのリストが表示されます。この領域の一番上の ``+ '' アイコンをクリックすると、(ローカルでクローンするかアタッチするかして)リポジトリを追加できます。
-
真ん中はコミット入力領域です。コミットメッセージを入力したり、コミットに含めるファイルを選択したりできます。 (Windowsでは、コミットの歴史は、この下に直接表示されます。Macの場合は、別のタブに表示されます。)
-
右側はdiffビューです。作業ディレクトリの変更内容、または、選択しているコミットに含まれている内容が表示されます。
-
最後に、右上の ``Sync'' ボタンは、ネットワーク経由で対話を行う主要な手段です。
Note
|
これらのツールの使用にあたり、GitHubのアカウントは必要ありません。 これらのツールはGitHubのサービスや推奨ワークフローをハイライトするために設計されたものですが、どんなリポジトリに対しても正しく動作しますし、どんなGitのホストに対してもネットワーク操作が行えます。 |
Windows用のGitHubクライアントは https://windows.github.com から、Mac用のGitHubクライアントは https://mac.github.com からダウンロードできます。 クライアントを初めて実行する際には、名前やメールアドレスの設定といったGitの初期設定がひと通り行われます。また、認証情報のキャッシュやCRLFの挙動といった、一般的なオプション設定に対して、デフォルト値が設定されます。
これらのツールはいずれも ``新鮮'' な状態に保たれます。つまり、アプリケーションのアップデートは、アプリケーションの実行中にバックグラウンドで自動的にダウンロードされ、インストールされます。 このアップデートには、ツールに同梱されているGitも含まれています。そのため、Gitを手動で更新する心配をする必要はおそらくないと思います。 Windowsの場合、PowerShellをPosh-gitと一緒に起動するショートカットがクライアントに同梱されています。これについてはこの章の後半で詳しく説明します。
次のステップでは、ツールに操作対象のリポジトリを設定します。 クライアントには、GitHubであなたがアクセスできるリポジトリの一覧が表示されます。クローンの作成は1ステップで行えます。 既にローカルリポジトリがある場合は、GitHubのクライアントウインドウにFinderまたはWindowsエクスプローラからそのディレクトリをドラッグすれば、クライアント左側のリポジトリのリストに追加されます。
インストールと設定が完了したら、GitHubクライアントを使って一般的なGitのタスクの多くが行えます。 このツールで想定されているワークフローは ``GitHub Flow'' とも呼ばれています。 この詳細は ch06-github.asc で取り上げます。要点としては、(a)コミットはブランチに対して行う、(b)定期的にリモートリポジトリと同期する、といった点があります。
ブランチ管理は、2つのツールで操作が異なる点の一つです。 Mac用クライアントでは、新しいブランチを作成するためのボタンがウィンドウ上部にあります。
Windows用クライアントでは、ブランチ切り替えのウィジェットで新しいブランチ名を入力すると、新しいブランチが作成されます。
ブランチの作成が終われば、コミットの新規作成は非常に簡単です。 作業ディレクトリで変更を行った後、GitHubクライアントのウィンドウに切り替えると、どのファイルが変更されたか表示されます。 コミットに含めたいファイルを選択し、コミットメッセージを入力したら、 ``Commit'' ボタンをクリックします(またはCtrl-Enterか、⌘-Enterを押下します)。
ネットワーク経由で他のリポジトリとの対話するには、主に Sync'' 機能を使用します。
Gitは内部的に、プッシュ、フェッチ、マージ、およびリベースを別々の操作としていますが、GitHubクライアントではこれら一連の処理を1つの機能で実行できるようになっています。
Sync'' ボタンをクリックすると以下の処理が実行されます。
-
git pull --rebase
を実行します。 マージが衝突してこのコマンドが失敗したら、代わりにgit pull --no-rebase
にフォールバックします。 -
git push
を実行します。
これは、このスタイルで作業するときに最もよく実行されるネットワークコマンドのシーケンスなので、これを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 を参照してください。