Close

GitK

Gitk is a graphical repository browser. It was the first of its kind. It can be thought of as a GUI wrapper for git log. It is useful for exploring and visualizing the history of a repository. It’s written in tcl/tk which makes it portable across operating systems. gitk is maintained by Paul Mackerras as an independent project, separate from Git core. Stable versions are distributed as part of the Git suite for the convenience of end users. Gitk can be a helpful learning aid for newcomers to Git.


Gitk overview


Gitk は、バージョン管理経験がない人や、Subversion のような別のバージョン管理システムから移行する人にとって、役に立つ学習ユーティリティです。Gitk は Git コアにパッケージ化された便利なユーティリティです。Git の内部メカニズムを視覚化するのに役立つグラフィカル ユーザー インターフェイスを備えています。その他の人気のある Git GUI には、git-gui やアトラシアン独自の Sourcetree があります。

使用法


Gitk は git log と同様に呼び出されます。gitk コマンドを実行すると、以下のような Gitk UI が起動します。

Initial kopiera

左上のペインには、リポジトリへのコミットが表示され、最新のものが一番上に表示されます。右下には、選択したコミットによって影響を受けるファイルのリストが表示されます。左下のペインには、コミットの詳細と完全な差分が表示されます。右下のペインでファイルをクリックすると、左下のペインの差分が関連するセクションにフォーカスされます。

Gitk はリポジトリの現在の状態を反映しますブランチを変更するなど、別のコマンド ラインでリポジトリの状態を変更した場合、Gitk を再読み込みする必要があります。Gitk は、[File (ファイル)] メニュー -> [Reload (再読み込み)] で再読み込みできます。

データベース
関連資料

Git リポジトリ全体を移動する方法

Bitbucket ロゴ
ソリューションを見る

Bitbucket Cloud での Git の使用方法についてのチュートリアルです。

既定では、Gitk は現在のコミットの履歴をレンダリングします。Gitk には、初期化時に渡すことができるさまざまなコマンド ライン オプションがあります。これらは主に Gitk のトップレベル ビューにレンダリングされるコミットのリストを制限するオプションです。これらのリビジョン オプションを使用した一般的な実行形式は次のとおりです。

オプション


    gitk [<options>] [<revision range>] [--] [<path>…]

    <revision range>

".." の形式のリビジョン範囲を渡すことで、 の間のすべてのリビジョンを表示できます。または、1 つのリビジョンを渡すことができます。

  <path>…

コミットを特定のファイル パスに制限します。パスをリビジョン名から切り離すには、"--" を使用して、先行するオプションからパスを分離します。

--all

すべてのブランチ、タグ、参照を表示します。

--branches[=<pattern>] --tags[=<pattern>] --remotes[=<pattern>]

Displays the selected item (branches, tags, remotes) as if they were mainline commits. When <pattern> is passed, further limits refs to ones matching the specified pattern

    --since=<date>

指定した日付より新しいコミットをレンダリングします。

    --until=<date>

指定した日付より古いコミットをレンダリングします。

    --date-order

コミットを日付順に並べ替えます。

    --merge

マージ中に特定された競合ファイルを変更するコミットを表示します。

    --left-right

コミットが差分のどちら側からのものかを示す情報ラベルをレンダリングします。左側からのコミットには < 記号、右側からのコミットには > 記号が先頭に付きます。

    --ancestry-path

表示するコミットの範囲 (例: commit1.. commit2 または commit2 commit1) を指定した場合、commit1commit2 の間の祖先チェーンに直接存在するコミット、つまり commit1 の子孫であり、かつ commit2 の祖先であるコミットのみが表示されます。(詳しい説明は git-log (1) の "履歴の簡略化" を参照してください。)

L<start>,<end>:<file>

特定のコード行番号範囲の履歴を追跡できる強力なオプション。

Discussion & examples


Gitk で価値ある出力を提供するためには、基盤となるリポジトリにコミット履歴が必要です。次のコードは、コミットがあり、1 つにマージされた 2 つのブランチを持つ新しいリポジトリを作成する、bash コマンド シーケンスです。

    mkdir gitkdemo &&
    cd gitkdemo &&
    git init . &&
    echo "hello world" > index.txt &&
    git add index.txt &&
    git commit -m "added index.txt with hello world content"

このデモ リポジトリは、Gitk で調べる良い例となるでしょう。このコマンド シーケンスでは、1 つのコミットと index.txt ファイルを含む新しいリポジトリが作成されます。それでは、gitk を呼び出してリポジトリを調べてみましょう。

First commit

Can Gitk compare two commits?


デモ リポジトリを続けて、追加のコミットを作成しましょう。

 echo "prpended content to index" >> index.txt &&
    git commit -am "prepended content to index"

先行するコマンドが実行されたら、gitk を再読み込みする必要があります。コマンド ラインから gitk を再読み込みするか、GUI を使用して [File (ファイル)] -> [Reload (再読み込み)] に移動します。再読み込みすると、新しい commit が表示されます。

Next commit

main ブランチ ref が新しいコミットを指しているのがわかります。これら 2 つのコミットを比較するには、左上の履歴パネルを使用します。履歴パネルで、差分のベースとなるコミットをクリックします。選択したら、2 つ目のコミットを右クリックしてコンテキスト メニューを開きます。

Commit diff

このコンテキスト メニューには次のオプションがあります。

    Diff this -> selected
    Diff selected -> this

これらのオプションのいずれかを選択すると、左下のペインに 2 つのコミットの差分が表示されます。この例では以下のようになります。

Diff output

差分の出力は、index.txt に 2 つのコミットの間に "prepended content to index" という新しい行が追加されたことを示しています。

How to use Gitk to compare two branches


サンプル リポジトリを続けて、新しいブランチを作成しましょう。

    git checkout -b new_branch &&
    echo "new branch content" > new_branch_file.txt &&
    git add new_branch_file.txt &&
    git commit -m "new branch commit with new file and prepended content" &&
    echo "new branch index update" >> index.txt &&
    git commit -am "new branch commit to index.txt with new content"

この後のコマンド シーケンスでは、new_branch という名前の新しいブランチが作成され、そこに new_branch_file.txt というファイルが追加されます。さらに、index.txt に新しいコンテンツが追加され、その更新のために追加のコミットが行われます。これで、main より 2 コミット先の新しいブランチができました。これらの変更を反映するには Gitk を再読み込みする必要があります。

New branch

これは Git のブランチ メカニズムについて説明する絶好の学習機会です。Gitk では、コミットはコミットの直線シーケンスとして表示されます。ブランチという用語は、タイムラインに「ブランチ」またはフォークが予期されていることを意味します。Git ブランチは他のバージョン管理システムとは異なります。Git ではブランチはコミットを指すポインタです。ブランチを作成すると、ポインタがコミットに移動します。git ブランチを作成しても、リポジトリやソースツリーの構造は変わりません。新しいポインタを作成しているだけです。

2 つのブランチ間で異なるコミットを比較するには、Gitk を指定したリビジョン範囲で起動する必要があります。gitk main.. new_branch を実行すると、2 つのブランチ参照間のコミットだけで Gitk が開きます。

Compare branch

これは、ブランチを比較するための強力なユーティリティです。

Gitk と Git Gui


Git Gui は、Git に対するもう 1 つの Tcl/Tk ベースのグラフィカル ユーザー インターフェイスです。Gitk はリポジトリの履歴のナビゲートと視覚化に焦点を当てていますが、Git Gui は個々のコミットや単一のファイル注釈の向上に焦点を当てており、プロジェクト履歴は表示しません。Git Gui には、履歴探索のために Gitk を起動するためのメニュー アクションも用意されています。Git Gui は、git gui を実行することでコマンドラインからも呼び出されます。

Gitk summary


結論として、Gitk は git log のグラフィカル インターフェイス ラッパーです。Gitk は、リポジトリの履歴を視覚化して探索することに関して非常に強力です。Gitk は Git の内部構造を学ぶのにも役立つツールです。


この記事を共有する
次のトピック

おすすめコンテンツ

次のリソースをブックマークして、DevOps チームのタイプに関する詳細や、アトラシアンの DevOps についての継続的な更新をご覧ください。

一面のツールを使ってコラボレーションしている人たち

Bitbucket ブログ

DevOps のイラスト

DevOps ラーニング パス

Demo Den アトラシアン・エキスパートによる機能デモ

Bitbucket Cloud が、Atlassian Open DevOps とどのように連携するか

DevOps ニュースレター購読

Thank you for signing up