// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= NetBeans IDEでのGitサポートの使用
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: NetBeans IDEでのGitサポートの使用 - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, NetBeans IDEでのGitサポートの使用

NetBeans IDEはGitバージョン管理クライアントをサポートしています。IDEのGitサポートにより、IDE内のプロジェクトから直接バージョン管理タスクを実行できます。このドキュメントでは、バージョン管理ソフトウェアを使用する場合の標準的なワークフローを説明することによって、IDEの基本的なバージョン管理タスクの実行方法を示します。

Gitは、小さなプロジェクトから非常に大きなプロジェクトまであらゆるものを高速かつ効率的に処理するように設計された、無料かつオープン・ソースの分散バージョン管理システムです。すべてのGitクローンは、ネットワーク・アクセスや中央のサーバーに依存せずに、完全な履歴およびリビジョン・トラック機能を備え、すべてを完備したリポジトリです。分岐やマージの実行は高速で簡単です。Gitはファイルのバージョン管理に使用され、Mercurial、Subversion、CVS、Perforceなどのツールによく似ています。

== 内容

image::images/netbeans-stamp-80-74.png[title="このページの内容は、NetBeans IDE 7.4および8.0に適用されます"]

* <<initialize,Gitリポジトリの初期化>>
* <<clone,Gitリポジトリのクローン>>
* <<github,SSHプロトコルによるGitHubからのリポジトリのクローン>>
* <<add,Gitリポジトリへのファイルの追加>>
* <<editing,ファイルの編集>>
* <<viewChanges,ソース・エディタでの変更の表示>>
* <<viewFileStatus,ファイルのステータス情報の表示>>
* <<diff,ファイル・リビジョンの比較>>
* <<revert,変更を元に戻す>>
* <<committing,リポジトリへのソースのコミット>>
* <<branch,分岐の操作>>
* <<branchCreate,分岐の作成>>
* <<branchCheckOut,分岐のチェックアウト>>
* <<branchMerge,マージ>>
* <<branchDelete,分岐の削除>>
* <<remote,リモート・リポジトリの操作>>
* <<fetch,フェッチ>>
* <<pull,プル>>
* <<push,プッシュ>>
* <<summary,サマリー>>
* <<seealso,関連項目>>


== 要件

*このチュートリアルを完了するには、次のソフトウェアとリソースが必要です。*

|===
|ソフトウェアまたはリソース |必須バージョン 

|link:https://netbeans.org/downloads/index.html[+NetBeans IDE+] |バージョン7.4または8.0 

|link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+Java Development Kit+] (JDK) |バージョン7または8 
|===


== Gitリポジトリの初期化

まだソース管理されていない既存のファイルからGitリポジトリを初期化するには、次の手順を完了する必要があります。

1. 「プロジェクト」ウィンドウで、バージョン管理されていないプロジェクトを選択し、プロジェクト名を右クリックします。
2. コンテキスト・メニューで「 ``バージョン管理`` 」>「 ``Gitリポジトリの初期化`` 」(または、メイン・メニューの「 ``チーム`` 」>「 ``Git`` 」>「 ``初期化`` 」)を選択します。

[.feature]
--
image::images/initialize-git-repo-small.png[role="left", link="images/initialize-git-repo.png"]
--


1. 「 ``Gitリポジトリの初期化`` 」ダイアログ・ボックスで、バージョン管理されるファイルの保存先リポジトリへのパスを指定するか、「参照」をクリックして、必要なディレクトリを参照します。
2. 「OK」をクリックします。

 ``.git`` サブフォルダは、上のステップ3で指定したフォルダ(デフォルトでNetBeansプロジェクト・フォルダ)に作成され、プロジェクト・スナップショットのすべてのデータが格納されるGitリポジトリです。Gitは指定されたフォルダ内のすべてのファイルのバージョン管理を開始します。
「 ``ウィンドウ`` 」>「 ``出力`` 」>「 ``出力`` 」を開いて、ローカル作業ディレクトリ下のリポジトリの作成の進捗に関するIDEのレポートを表示できます。

image::images/output-init.png[]

すべてのプロジェクト・ファイルが作業ツリーで「 ``追加済み`` 」とマークされます。ファイル・<<viewFileStatus,ステータス>>を表示するには、「プロジェクト」ウィンドウ内のファイル名の上にカーソルを置きます。次の図に示すように、作業ツリーのファイルのステータスが、斜線の右側に緑で表示されます。

image::images/new-locally.png[]

Gitリポジトリの初期化後、Gitリポジトリにファイルを<<add,追加>>するか、または直接それらを<<committing,コミット>>します。


== Gitリポジトリのクローン

既存のGitリポジトリのコピーを取得するには、それをクローンする必要があります。IDEでリポジトリをクローン・ウィザードを起動する前に、GitリポジトリのURLがわかっていることを確認します。

1. メイン・メニューから「 ``チーム`` 」>「 ``Git`` 」>「 ``クローン`` 」を選択します。リポジトリをクローン・ウィザードが表示されます。

[.feature]
--
image::images/clone-wizard-small.png[role="left", link="images/clone-wizard.png"]
--


1. リポジトリ・ページで、Gitリポジトリの場所へのパス、ユーザー名、およびパスワードを指定します(必要に応じて、今後のためにそれらを保存できます)。
2. (オプション)「プロキシ構成」をクリックし、「オプション」ダイアログ・ボックスを表示して、プロキシ・サーバー設定を設定します。終了したら「OK」をクリックします。
3. 「次」をクリックして、ウィザードの次のステップに切り替えます。
4. リモート分岐ページで、ローカル・リポジトリにフェッチ(ダウンロード)するリポジトリ分岐を選択します。「次」をクリックします。
5. 出力先ディレクトリ・ページで、次を指定します。
* 「親ディレクトリ」フィールドでは、ハード・ドライブ上にクローンされるリポジトリ用のディレクトリへのパス(または、「参照」ボタンをクリックし、ディレクトリに移動する)。
「親ディレクトリ」フィールドには、すべてのNetBeansプロジェクトが格納されるデフォルトの ``NetBeansProjects`` ディレクトリへのパスが事前入力されています。
* 「クローン名」フィールドの、元のプロジェクトをクローンするローカル・フォルダの名前。
デフォルトで、「クローン名」には実際のGitリポジトリ名が入力されています。
* 「分岐のチェックアウト」フィールドで、作業ツリーにチェックアウトする分岐を選択します。
* 「リモート名」フィールドの、クローンする元のリポジトリを表す名前。
 ``origin`` はクローンするリポジトリのデフォルトのエイリアスです。これは推奨される値です。
* 「クローン後にNetBeansプロジェクトをスキャン」チェックボックスを選択されたままにして、クローンの終了直後に、事後スキャンをアクティブ化します。(プラグインはクローンされたリソースでNetBeansプロジェクトを検索し、見つかったプロジェクトを開くように提案します。)


. 「終了」をクリックします。
Gitリポジトリのクローン後、ウィザードで選択したフォルダ内にメタデータ ``.git`` フォルダが作成されます。


=== SSHプロトコルによるGitHubからのリポジトリのクローン

SSHプロトコルによってGitHubからリポジトリをクローンするには、次のように進みます。

*注意:* SSHによってクローンするには、GitHubアカウントを持っており、プロジェクト・メンバーである必要があります。

1. メイン・メニューから「 ``チーム`` 」>「 ``Git`` 」>「 ``クローン`` 」を選択します。リポジトリをクローン・ウィザードが表示されます。
2. リポジトリをクローン・ウィザードのリモート・リポジトリ・ページで、「リポジトリURL」フィールドに、必要なリポジトリへのパス、たとえば ``git@github.com:tstupka/koliba.git`` などを指定します。
3. 「ユーザー名」テキスト・フィールドに ``git`` が指定されていることを確認します。
4. 「秘密/公開鍵」オプションを選択します。
5. (*Gitサーバーへの自動化されたSSHアクセスにSSHエージェントまたはPageantを使用中の場合はスキップします。*)SSH秘密鍵およびパス・フレーズを使用してGitサーバーにアクセスするには次の手順を実行します。


[start=1]
1. 鍵ファイルへのパス、たとえば ``C:\Users\key`` などを指定します。

*注意:* OpenSSH秘密鍵形式が必要です。Microsoft Windowsに対応のPuTTYgenで生成された鍵は、IDEを使用する前に、OpenSSH形式に変換する必要があります。


. 鍵ファイルのパス・フレーズ、たとえば ``abcd`` などを入力します。


. (オプション)必要に応じて、「パス・フレーズを保存」オプションを選択します。


. (*Gitサーバーへの自動化されたSSHアクセスにSSHエージェントまたはPageantを使用中の場合に適用されます。*)正しく構成されたSSHエージェントまたはPageant経由でIDEからGitサーバーへの認証されたアクセスを得るには、「秘密鍵ファイル」および「パス・フレーズ」フィールドを空のままにします。
. (オプション)「プロキシ構成」をクリックし、「オプション」ダイアログ・ボックスを表示して、プロキシ・サーバー設定を設定します。終了したら「OK」をクリックします。

[.feature]
--
image::images/github-repo-small.png[role="left", link="images/github-repo.png"]
--


. 「次」をクリックします。
. リモート分岐ページで、ローカル・リポジトリにフェッチ(ダウンロード)するリポジトリ分岐、たとえば ``master`` などを選択します。

[.feature]
--
image::images/github-branches-small.png[role="left", link="images/github-branches.png"]
--


. 「次」をクリックします。
. 出力先ディレクトリ・ページで、次を指定します。
* 「親ディレクトリ」フィールドでは、ハード・ドライブ上にクローンされるリポジトリ用のディレクトリへのパス(または、「参照」ボタンをクリックし、ディレクトリに移動する)。
「親ディレクトリ」フィールドには、すべてのNetBeansプロジェクトが格納されるデフォルトの ``NetBeansProjects`` ディレクトリへのパスが事前入力されています。
* 「クローン名」フィールドの、元のプロジェクトをクローンするローカル・フォルダの名前。
デフォルトで、「クローン名」には実際のGitリポジトリ名が入力されています。
* 「分岐のチェックアウト」フィールドで、作業ツリーにチェックアウトする分岐を選択します。
* 「リモート名」フィールドの、クローンする元のリポジトリを表す名前。
 ``origin`` はクローンするリポジトリのデフォルトのエイリアスです。これは推奨される値です。
* 「クローン後にNetBeansプロジェクトをスキャン」チェックボックスを選択されたままにして、クローンの終了直後に、事後スキャンをアクティブ化します。(プラグインはクローンされたリソースでNetBeansプロジェクトを検索し、見つかったプロジェクトを開くように提案します。)

[.feature]
--
image::images/github-destination-small.png[role="left", link="images/github-destination.png"]
--


1. 「終了」をクリックします。
リポジトリがクローンされると、「クローン完了」メッセージが表示されます。

image::images/clone-completed.png[]


1. 目的のオプションを選択します。


== Gitリポジトリへのファイルの追加

新しいファイルのトラックを開始し、さらに、Gitリポジトリ内のすでにトラックされているファイルへの変更をステージングするには、それをリポジトリに追加する必要があります。

Gitリポジトリにファイルが追加されると、IDEはプロジェクトのスナップショットを作成し、最初に索引に保存します。コミットが実行されると、IDEはそれらのスナップショットをHEADに保存します。IDEでは、次の表に説明する2つのワークフローから選択できます。

|===
|ワークフローの説明 |新規または変更済のファイルを索引に明示的に追加し、索引でステージングされているファイルのみをHEADにコミットします。 |新規または変更済のファイルの索引への追加をスキップし、必要なファイルを直接HEADにコミットします。 

|ワークフローに従う手順  |

1. 「プロジェクト」ウィンドウで、追加するファイルを右クリックします。
2. コンテキスト・メニューで「 ``Git`` 」>「 ``追加`` 」を選択します。
これにより、コミットする前に、ファイルの内容が索引に追加されます。

1. 「プロジェクト」ウィンドウで、コミットするファイルを右クリックします。
2. 「コミット」ダイアログ・ボックスで、「HEADと索引間の変更」(image::images/changes-head-index.png[])トグル・ボタンを選択します。
これにより、すでにステージングされているファイルの一覧が表示されます。

1. 下の<<committing,リポジトリへソースのコミット>>の項で説明するように、ファイルをコミットします。
 |

1. 「プロジェクト」ウィンドウで、コミットするファイルを右クリックします。
2. コンテキスト・メニューで、「 ``Git`` 」>「 ``コミット`` 」を選択します。
3. 「コミット」ダイアログ・ボックスで、「索引と作業ツリー間の変更」(image::images/changes-head-wt.png[])トグル・ボタンを選択します。
これにより、ステージングされていないファイルの一覧が表示されます。

[start=4]
. 下の<<committing,リポジトリへソースのコミット>>の項で説明するように、ファイルをコミットします。
 
|===

*注意:* 次の図に示すように、HEAD内のファイルの<<viewFileStatus,ステータス>>が、斜線の左側に緑で表示されます。

image::images/new.png[]

アクションは、フォルダに対して起動した場合に、NetBeans IDEフラット・フォルダ内容構造を順守しながら、再帰的に動作します。


== ファイルの編集

Gitバージョン管理プロジェクトをIDEで開くと、ソースの変更を開始できます。NetBeans IDEで開く任意のプロジェクトと同様に、(「プロジェクト」(Ctrl-1)、「ファイル」(Ctrl-2)、「お気に入り」(Ctrl-3)ウィンドウなどの) IDEのウィンドウで表示されているファイルのノードをダブルクリックすると、ファイルをソース・エディタで開くことができます。

IDEでソース・ファイルを操作する場合、自由に使用できる様々なUIコンポーネントがあります。これらは、表示およびバージョン管理コマンドの操作で役立ちます。

* <<viewChanges,ソース・エディタでの変更の表示>>
* <<viewFileStatus,ファイルのステータス情報の表示>>
* <<revert,変更を元に戻す>>


=== ソース・エディタでの変更の表示

IDEのソース・エディタでバージョン管理されたファイルを開くと、Gitリポジトリからの基本バージョンに照らしあわせながら、そのファイルに行われた変更がリアル・タイムで表示されます。作業に伴って、IDEはソース・エディタのマージンに色分けを使用し、次の情報を伝えます。

|===
|*青* (     ) |古いリビジョンの後で変更された行を示します。 

|*緑* (     ) |古いリビジョンの後で追加された行を示します。 

|*赤* (     ) |古いリビジョンの後で除去された行を示します。 
|===

ソース・エディタの左側のマージンには、行ごとに発生した変更が表示されています。行を変更すると、その変更がすぐに左側のマージンに表示されます。

image::images/left-margin.png[]

*注意:* マージンの色グループをクリックして、バージョン管理コマンドをコールできます。たとえば、下の図は、赤いアイコンをクリックすると使用可能なウィジェットを示しており、ローカル・コピーから行が除去されたことを示します。

image::images/left-widgets.png[]

ソース・エディタの右側のマージンには、上から下に向かって、ファイル全体に行われた変更の概要が表示されます。ファイルに変更を行うと、すぐに色分けが生成されます。

image::images/right-margin.png[]

*注意*: マージンの特定の場所をクリックすると、インライン・カーソルがファイルのその場所にすぐに移動します。影響を受ける行数を表示するには、右側のマージンの色つきアイコンの上にマウスを動かします。

image::images/right-lines-number.png[]


=== ファイルのステータス情報の表示

「プロジェクト」(Ctrl-1)、「ファイル」(Ctrl-2)、「お気に入り」(Ctrl-3)または「バージョン管理」ビューで作業する場合、IDEには、ファイルのステータス情報を表示するのに役立つ視覚機能がいくつかあります。次の例では、バッジ(例: image::images/blue-badge.png[])、ファイル名の色、および隣接するステータス・ラベルすべての相互の対応方法を確認し、ファイルに対するバージョン管理情報をトラックする単純だが効果的な方法について説明します。

image::images/file-status.png[]

バッジ、色分け、ファイル・ステータス・ラベル、およびおそらく最も重要なGit差分ビューアはすべて、IDEでのバージョン管理情報を効率的に表示し、管理する能力に貢献します。

* <<badges,バッジと色分け>>
* <<fileStatus,ファイル・ステータス・ラベル>>
* <<versioningView,Gitバージョン管理ビュー>>


==== バッジと色分け

バッジはプロジェクト、フォルダおよびパッケージ・ノードに適用され、そのノードに含まれているファイルのステータスを示します。

バッジに使用される色のスキームを次の表に示します。

|===
|UIコンポーネント |説明 

|*青のバッジ*(image::images/blue-badge.png[]) |作業ツリー内の変更、追加、または削除されたファイルの存在を示します。パッケージの場合、このバッジは、パッケージ自体にのみ適用され、そのサブパッケージには適用されません。プロジェクトまたはフォルダの場合、このバッジはその項目または含まれるサブフォルダ内の内容の変更を示します。 

|*赤のバッジ*(image::images/red-badge.png[]) |_競合する_ファイルを含むプロジェクト、フォルダまたはパッケージをマークします。パッケージの場合、このバッジは、パッケージ自体にのみ適用され、そのサブパッケージには適用されません。プロジェクトまたはフォルダの場合、このバッジはその項目または含まれるサブフォルダ内の競合を示しています。 
|===

色分けは、リポジトリに照らして、現在のステータスを示す目的でファイル名に適用されます。

|===
|色 |例 |説明 

|*特定の色なし(黒)* |image::images/black-text.png[] |ファイルに変更がないことを示します。 

|*青* |image::images/blue-text.png[] |ファイルがローカルに変更されたことを示します。 

|*緑* |image::images/green-text.png[] |ファイルがローカルに追加されたことを示します。 

|*赤* |image::images/red-text.png[] |ファイルにマージの競合があることを示します。 

|*グレー* |image::images/gray-text.png[] |ファイルがGitによって無視され、バージョン管理コマンド(更新やコミットなど)に含まれないことを示します。ファイルはバージョン管理されている場合、無視できません。 
|===


==== ファイル・ステータス・ラベル

IDEはファイルの2つのステータス値を表示します。

* ファイルの作業ツリーと索引状態の相違を示すステータス。
* ファイルの索引状態と現在のHEADコミットの相違を示すステータス。

ファイル・ステータス・ラベルは、バージョン管理ファイルのステータスを、IDEのウィンドウにテキストで示します。

|===
|ステータス・ラベル |意味 

|*-* |変更なし 

|*A* |追加済 

|*U* |更新済であるが未マージ 

|*M* |変更 

|*D* |削除済 

|*I* |無視 

|*R* |名前変更済 
|===

デフォルトで、IDEは、ファイルをウィンドウに一覧表示するときに、そのファイルの右側にステータス情報(新規、変更済、無視など)およびフォルダ情報をグレー・テキストで表示します。

image::images/file-labels.png[]

マージの競合があるファイルは未マージステータスを示し、一般にユーザーの明示的なアクションによって解決されるまで、赤い色で注釈が付けられます。マージされていないファイルのステータス・ラベルは、シナリオによって異なります(たとえば、 ``A/A``  - 未マージ、両方追加済)。

ファイル・ステータス・ラベルは、メイン・メニューから「 ``表示`` 」>「 ``バージョン・ラベルを表示`` 」を選択して、オンとオフを切り替えできます。


==== Gitバージョン管理ビュー

Gitバージョン管理ビューは、ローカルの作業ツリーの選択されたフォルダ内でファイルに行われた変更のすべてを、リアル・タイムで一覧表示します。これはIDEの下のパネルにデフォルトで開き、追加、削除または変更されたファイルを一覧表示します。

バージョン管理ビューを開くには、(「プロジェクト」ウィンドウ、「ファイル」ウィンドウまたは「お気に入り」ウィンドウなどから)バージョン管理ファイルまたはフォルダを選択し、右クリック・メニューから「 ``Git`` 」>「 ``変更を表示`` 」を選択するか、またはメイン・メニューから「 ``チーム`` 」>「 ``変更を表示`` 」を選択します。IDEの最下部に次のウィンドウが表示されます。

[.feature]
--
image::images/versioning-view-small.png[role="left", link="images/versioning-view.png"]
--

デフォルトでは、バージョン管理ビューは、作業ツリー内の選択されたパッケージまたはフォルダ内の変更されたすべてのファイルを一覧表示します。ツールバーのボタンを使用して、索引とHEAD、作業ツリーと索引、または作業ツリーとHEAD間で相違があるファイルの一覧を表示するように選択できます。一覧表示されたファイルの上にある列の見出しをクリックして、名前、ステータス、または場所でファイルをソートすることもできます。

「バージョン管理」ビューのツールバーには、一覧に表示されているすべてのファイルに対して一般的なGitタスクを呼び出すことができるボタンも用意されています。次の表は、「バージョン管理」ビューのツールバーにあるGitコマンドをまとめています。

|===
|アイコン |名前 |機能 

|image::images/changes-head-wt.png[] |*HEADと作業ツリー間の変更* |すでにステージングされているか、変更または作成のみされていて、まだステージングされていないファイルの一覧を表示します。 

|image::images/changes-head-index.png[] |*HEADと索引間の変更* |ステージングされているファイルの一覧を表示します。 

|image::images/changes-index-wt.png[] |*索引と作業ツリー間の変更* |ステージング済の状態と作業ツリーの状態に相違があるファイルを表示します。 

|image::images/refresh.png[] |*ステータスのリフレッシュ* |選択したファイルとフォルダのステータスをリフレッシュします。「バージョン管理」ビューに表示されたファイルは、外部で行われた可能性のある任意の変更を反映してリフレッシュできます。 

|image::images/open-diff.png[] |*差分を開く* |差分ビューアを開くと、ローカルのコピーとリポジトリで保持されているバージョンを並べた比較が表示されます。 

|image::images/update.png[] |*変更内容を元に戻す* |「<<revertdialog,変更内容を元に戻す>>」ダイアログ・ボックスを表示します。 

|image::images/commit-button.png[] |*変更をコミット* |「<<commitdialog,コミット>>」ダイアログ・ボックスを表示します。 
|===

「バージョン管理」ビューで、変更したファイルに対応する表の行を選択し、右クリック・メニューからコマンドを選択すると、他のGitコマンドにアクセスできます。

[.feature]
--
image::images/versioning-right-click-small.png[role="left", link="images/versioning-right-click.png"]
--


=== ファイル・リビジョンの比較

ファイル・バージョンの比較は、バージョン管理されているプロジェクトでの作業で共通のタスクです。IDEでは、「差分」コマンドを使用して、リビジョンを比較できます。

*注意:* 複数の比較モード(「HEADとの差分」、「トラック済との差分」、「差分の対象」)がIDEで使用可能です。

1. バージョン管理されたファイルまたはフォルダを選択します(「 ``プロジェクト`` 」、「 ``ファイル`` 」、「 ``お気に入り`` 」ウィンドウなどから)。
2. メイン・メニューから「 ``チーム`` 」>「 ``差分`` 」>「 ``HEADとの差分`` 」を選択します。
選択したファイルとリビジョンについてグラフィカルな差分ビューアがIDEのメイン・ウィンドウで開きます。差分ビューアには2つのコピーが並んだパネルに表示されます。右側により現在に近いコピーが表示されるため、作業ツリーに対してリポジトリ・リビジョンを比較すると、右パネルに作業ツリーが表示されます。

[.feature]
--
image::images/diff-viewer-small.png[role="left", link="images/diff-viewer.png"]
--

差分ビューアは、バージョン管理の変更を表示する場所に使用されているのと同じ<<color-coding-table,色分け>>を利用します。前に表示したスクリーン・ショットの緑色のブロックは、より現在に近いリビジョンに追加された内容を示します。赤いブロックは、前のリビジョンの内容が、より最近のリビジョンから除去されたことを示します。青は、強調表示された行で変更が発生したことを示します。

*注意:* 他のリビジョンは、差分ビューア・ツールバーの下の「 ``差分`` 」および「 ``送信先`` 」ドロップダウン・リストから選択できます。

差分ビューアのツールバーには、一覧に表示されているすべてのファイルに対して一般的なGitタスクを呼び出すことができるボタンも用意されています。次の表は、差分ビューアのツールバーにあるGitコマンドをまとめています。

|===
|アイコン |名前 |機能 

|image::images/changes-head-wt.png[] |*HEADと作業ツリー間の変更* |すでにステージングされているか、変更または作成のみされていて、まだステージングされていないファイルの一覧を表示します。 

|image::images/changes-head-index.png[] |*HEADと索引間の変更* |ステージングされているファイルの一覧を表示します。 

|image::images/changes-index-wt.png[] |*索引と作業ツリー間の変更* |ステージング済の状態と作業ツリーの状態に相違があるファイルを表示します。 

|image::images/nextdiff.png[] |*次の差分へ* |ファイル内の次の差分を表示します。 

|image::images/prevdiff.png[] |*前の差分へ* |ファイル内の前の差分を表示します。 

|image::images/refresh.png[] |*ステータスのリフレッシュ* |選択したファイルとフォルダのステータスをリフレッシュします。「バージョン管理」ウィンドウに表示されたファイルは、外部で行われた可能性のある任意の変更を反映してリフレッシュできます。 

|image::images/update.png[] |*変更内容を元に戻す* |「<<revertdialog,変更内容を元に戻す>>」ダイアログ・ボックスを表示します。 

|image::images/commit-button.png[] |*変更をコミット* |「<<commitdialog,コミット>>」ダイアログ・ボックスを表示します。 
|===

作業ツリー内のローカル・コピーで差分の取得を実行する場合、IDEの差分ビューア内から直接変更を行うことができます。これを行うには、カーソルを差分ビューアの右ペインに置き、それに従ってファイルを変更するか、または強調表示された各変更の前後で表示されるインライン・アイコンを使用します。

|===
|アイコン |名前 |機能 

|image::images/insert.png[] |*置換* |強調表示されたテキストを作業ツリー・コピーに挿入します。 

|image::images/arrow.png[] |*すべて移動* |ローカル作業ツリー・コピー全体を元に戻します。 

|image::images/remove.png[] |*除去* |ローカル作業ツリー・コピーから強調表示されたテキストを除去します。 
|===


=== 変更を元に戻す

作業ツリー内の選択したファイルに行ったローカルの変更をスローし、それらのファイルを索引またはHEAD内のファイルで置き換えるには、次を実行します。

1. バージョン管理されたファイルまたはフォルダを選択します(「 ``プロジェクト`` 」、「 ``ファイル`` 」、「 ``お気に入り`` 」ウィンドウなどから)。
2. メイン・メニューから「 ``チーム`` 」>「 ``変更内容を元に戻す`` 」を選択します。
「 ``変更内容を元に戻す`` 」ダイアログ・ボックスが表示されます。

image::images/revert.png[]


1. 追加のオプション(「 ``索引のコミットされていない変更のみをHEADに戻す`` 」など)を指定します。
2. 「元に戻す」をクリックします。

IDEによって、選択したファイルが上の<<three,ステップ3>>で指定したファイルで置き換えられます。


== リポジトリへのソースのコミット

ファイルをGitリポジトリにコミットするには、次を実行します。

1. 「 ``プロジェクト`` 」ウィンドウで、コミットするファイルを右クリックします。
2. コンテキスト・メニューで、「 ``Git`` 」>「 ``コミット`` 」を選択します。

「 ``コミット`` 」ダイアログ・ボックスが表示されます。

[.feature]
--
image::images/commit-small.png[role="left", link="images/commit.png"]
--

「 ``コミット`` 」ダイアログ・ボックスには次のコンポーネントが含まれます。

* コミットされる変更を説明するための「 ``コミット・メッセージ`` 」テキスト領域
* 必要に応じて、変更を行ったユーザーと物理的にファイルをコミットしたユーザーを区別できる「 ``作成者`` 」および「 ``コミッタ`` 」ドロップダウン・リスト。
* 「 ``コミットするファイル`` 」セクションには、次が表示されます。
* 変更されたすべてのファイル
* 作業ツリーで(ローカルで)削除されたすべてのファイル
* すべての新規ファイル(Gitリポジトリにまだ存在しないファイル)
* 名前を変更したすべてのファイル。

実際のコミットが実行されるモードを切り替える2つのトグル・ボタンがここで利用できます。

|===
|UIコンポーネント |名前 |説明 

|image::images/changes-head-index.png[] |*HEADと索引間の変更* |ステージングされているファイルの一覧を表示します。 

|image::images/changes-head-wt.png[] |*HEADと作業ツリー間の変更* |すでにステージングされているか、変更または作成のみされていて、まだステージングされていないファイルの一覧を表示します。 
|===

*注意*: ここで、コミットから個々のファイルを除外するかどうかを指定するには、「 ``コミット`` 」という最初の列のチェックボックスを選択解除するか、「 ``コミット・アクション`` 」列のファイル行を右クリックし、ポップアップ・メニューから「 ``コミットから除外`` 」を選択します。ここで差分ビューアを表示するには、「 ``コミット・アクション`` 」列のファイル行を右クリックし、ポップアップ・メニューから「 ``差分`` 」を選択します。

* コミットされる変更に関する問題をトラックするための「 ``問題を更新`` 」セクション。

*注意*: IDEで問題のトラックを開始するには、JIRAまたはSubversionプラグインをインストールする必要があります。


1. 「 ``コミット・メッセージ`` 」テキスト領域にコミット・メッセージを入力します。または、次のいずれかを実行できます。
* 右上隅にある「 ``最近のメッセージ`` 」(image::images/recent-msgs.png[])アイコンをクリックして、以前使用したメッセージのリストを表示して選択します。
* 右上隅にある「 ``テンプレートをロード`` 」(image::images/msg-template.png[])アイコンをクリックして、メッセージ・テンプレートを選択します。


. 個々のファイルのアクションを指定して「 ``コミット`` 」をクリックします。
IDEによってコミットが実行され、スナップショットがリポジトリに保存されます。コミット・アクションが実行されると、インタフェースの右下にあるIDEのステータス・バーが表示されます。コミットに成功すると、「 ``プロジェクト`` 」、「 ``ファイル`` 」および「 ``お気に入り`` 」ウィンドウのバージョン管理バッジが消え、コミットされたファイルの色分けが黒に戻ります。


== 分岐の操作

IDEのGitサポートでは、分岐を使用して、コード・ベース全体の様々なバージョンを管理できます。

IDEで分岐を操作する場合、次のアクションがサポートされます。

* <<branchCreate,作成>>
* <<branchCheckOut,チェックアウト>>
* <<branchMerge,マージ>>
* <<branchDelete,削除>>


=== 分岐の作成

メイン・トランクを妨げずに、安定化や実験の目的で、別個のバージョンのファイル・システムを操作する場合に、ローカル分岐を作成するには、次の完了を実行します。

1. 「プロジェクト」または「ファイル」ウィンドウで、分岐を作成するリポジトリからプロジェクトまたはフォルダを選択します。
2. メイン・メニューで「チーム」>「分岐/タグ」>「分岐の作成」を選択します。

*注意:* または、バージョン管理されたプロジェクトまたはフォルダを右クリックし、ポップアップ・メニューから「Git」>「分岐/タグ」>「分岐の作成」を選択します。

「分岐の作成」ダイアログ・ボックスが表示されます。

[.feature]
--
image::images/create-branch-small.png[role="left", link="images/create-branch.png"]
--


1. 「分岐名」フィールドで、作成する分岐の名前を入力します。
2. コミットID、既存の分岐、またはタグ名を「リビジョン」フィールドに入力して、選択した項目の特定のリビジョンを入力するか、「選択」を押して、リポジトリで管理されているリビジョンの一覧を表示します。
3. (オプション)「リビジョンを選択」ダイアログ・ボックスで、「分岐」を展開し、必要な分岐を選択して、隣接する一覧のコミットIDを指定し、「選択」を押します。
4. 分岐させるリビジョンに固有の「コミットID」、「作成者」、「メッセージ」フィールドの情報を確認して、「作成」をクリックします。
分岐がGitリポジトリの ``「分岐」/「ローカル」`` フォルダに追加されます。

[.feature]
--
image::images/branch-added-small.png[role="left", link="images/branch-added.png"]
--


=== チェックアウト

すでに存在する分岐上のファイルを編集する必要がある場合は、分岐をチェックアウトすることによって、ファイルを作業ツリーにコピーできます。

リビジョンをチェックアウトするには、次を実行します。

1. メイン・メニューから「チーム」>「チェックアウト」>「リビジョンのチェックアウト」を選択します。
「選択されたリビジョンをチェックアウト」ダイアログ・ボックスが表示されます。

[.feature]
--
image::images/chkout-rev-small.png[role="left", link="images/chkout-rev.png"]
--


1. コミットID、既存の分岐またはタグ名を「リビジョン」フィールドに入力して、必要なリビジョンを指定するか、「選択」を押して、リポジトリで管理されているリビジョンの一覧を表示します。
2. 前のステップで「選択」を押さなかった場合、スキップします。「リビジョンを選択」ダイアログ・ボックスで、「分岐」を展開し、必要な分岐を選択して、必要に応じて、隣接する一覧のコミットIDを指定し、「選択」を押します。

*注意:* 指定したリビジョンが分岐名でマークされていない有効なコミットを表している場合、HEADがデタッチされ、分岐上にいなくなります。


1. チェックアウトされるリビジョンに固有の「コミットID」、「作成者」、「メッセージ」フィールド情報を確認します。
2. チェックアウトしたリビジョンから新しい分岐を作成するには、「新しい分岐としてチェックアウト」オプションを選択し、「分岐名」フィールドに名前を入力します。
3. 「チェックアウト」を押して、リビジョンをチェックアウトします。
作業ツリーおよび索引内のファイルが、指定したリビジョンのバージョンに一致するように更新されます。

*注意:* すでに存在する分岐(いずれかの分岐の一番上にないコミットなど)にファイルを切り替える場合、「チーム」>「Git」>「分岐」>「分岐に切替え」コマンドを使用し、「選択された分岐に切替え」ダイアログ・ボックスで分岐を指定して、(オプションで)新しい分岐としてチェックアウトし、「切替え」を押します。

IDEは、IDEで現在選択されているファイル、フォルダまたはプロジェクトの状況に応じたチェックアウトをサポートしています。索引から、一部のファイル(分岐ではなく)をチェックアウトするには、次の手順を完了します。

1. メイン・メニューから「チーム」>「チェックアウト」>「ファイルのチェックアウト」を選択します。
「選択されたパスをチェックアウト」ダイアログ・ボックスが表示されます。

[.feature]
--
image::images/chkout-path-small.png[role="left", link="images/chkout-path.png"]
--


1. 「選択されたリビジョンからのエントリで索引を更新」オプションを選択します。
選択した場合、チェックアウト前に選択したリビジョンの状態で索引が更新されます(作業ツリーと索引の両方の選択したファイルが更新されます)。

[start=2]
. コミットID、既存の分岐またはタグ名を「リビジョン」フィールドに入力して、必要なリビジョンを指定するか、「選択」を押して、リポジトリで管理されているリビジョンの一覧を表示します。

[start=3]
. 前のステップで「選択」を押さなかった場合、スキップします。「リビジョンを選択」ダイアログ・ボックスで、「分岐」を展開し、必要な分岐を選択して、必要に応じて、隣接する一覧のリビジョン番号を指定し、「選択」を押します。

[start=4]
. 「チェックアウト」を押して、チェックアウトを完了します。


=== マージ

リポジトリ・リビジョンから変更を作業ツリーに移行するには、次のように実行します。

1. メイン・メニューから「チーム」>「分岐/タグ」>「リビジョンをマージ」を選択します。
「リビジョンをマージ」ダイアログ・ボックスが表示されます。

[.feature]
--
image::images/merge-small.png[role="left", link="images/merge.png"]
--


1. コミットID、既存の分岐またはタグ名を「リビジョン」フィールドに入力して、必要なリビジョンを指定するか、「選択」を押して、リポジトリで管理されているリビジョンの一覧を表示します。
2. 前のステップで「選択」を押さなかった場合、スキップします。「リビジョンを選択」ダイアログ・ボックスで、「分岐」を展開し、必要な分岐を選択して、必要に応じて、隣接する一覧のコミットIDを指定し、「選択」を押します。
3. 「マージ」を押します。
現在の分岐、作業ツリーの内容、指定した分岐間の3方向のマージが実行されます。

*注意:* マージの競合が発生した場合、競合するファイルが<<badges,赤のバッジ>>でマークされ、競合が示されます。

*注意:* マージ後、変更をHEADに追加するために、変更を<<committing,コミット>>する必要があります。


=== 分岐の削除

不要なローカル分岐を削除するには、次の手順を完了します。

1. メイン・メニューから「チーム」>「リポジトリ・ブラウザ」を選択します。
2. Gitリポジトリ・ブラウザで、削除する分岐を選択します。

*注意:* 分岐は非アクティブである、つまり現在作業ツリーにチェックアウトされていない必要があります。


1. 選択した分岐を右クリックし、ポップアップ・メニューから「分岐を削除」を選択します。
2. 「分岐を削除」ダイアログ・ボックスで、「OK」を押して、分岐の削除を確認します。
分岐がローカル・リポジトリとGitリポジトリ・ブラウザから除去されます。


== リモート・リポジトリの操作

他の開発者と協力する場合、作業を共有する必要があり、これには、インターネットまたはネットワーク上でホストされるリモート・リポジトリとのデータのフェッチ、プッシュ、プルが含まれます。

* <<fetch,フェッチ>>
* <<pull,プル>>
* <<push,プッシュ>>


=== フェッチ

フェッチは、元のリモート・リポジトリからまだ持っていない変更を取得します。これは、ローカル分岐を変更しません。フェッチはリモート・リポジトリからすべての分岐を取得し、いつでも分岐にマージしたり、単に検査したりすることができます。

更新をフェッチするには、次のように実行します。

1. 「チーム」>「リモート」>「フェッチ」を選択します。
「リモート・リポジトリからフェッチ」ウィザードが表示されます。

[.feature]
--
image::images/fetch-small.png[role="left", link="images/fetch.png"]
--


1. ウィザードのリモート・リポジトリ・ページで、構成済のリポジトリ(以前に構成されたリポジトリへのパスを使用する)または「Gitリポジトリの場所を指定」オプション(必要に応じて、まだアクセスされていないリモート・リポジトリへのパス、その名前、ログイン、パスワード、およびプロキシ構成を定義する)を選択し、「次」をクリックします。
2. ウィザードのリモート分岐ページで、変更をフェッチする分岐を選択し、「終了」をクリックします。
リモート分岐のローカル・コピーが作成されます。Gitリポジトリ・ブラウザの「 ``分岐`` 」>「 ``リモート`` 」ディレクトリで、選択した分岐が更新されます。
次に、フェッチした更新をローカル分岐にマージできます。


=== プル

リモートGitリポジトリから更新をプルすると、リポジトリから変更がフェッチされ、ローカル・リポジトリの現在のHEADにマージされます。
プルを実行するには、次の手順を完了します。

1. 「チーム」>「リモート」>「プル」を選択します。
リモート・リポジトリからプル・ウィザードが表示されます。

[.feature]
--
image::images/pull-small.png[role="left", link="images/pull.png"]
--


1. ウィザードのリモート・リポジトリ・ページで、構成済のリポジトリ(以前に構成されたリポジトリへのパスを使用する)または「Gitリポジトリの場所を指定」オプション(必要に応じて、まだアクセスされていないリモート・リポジトリへのパス、その名前、ログインとパスワードを定義する)を選択し、「次」をクリックします。
2. ウィザードのリモート分岐ページで、変更がプルされる分岐を選択し、「終了」をクリックします。
ローカル・リポジトリが元のリポジトリと同期されます。


=== プッシュ

ローカルGitリポジトリの変更を公開Gitリポジトリに貢献するには、次の手順を実行します。

1. 「チーム」>「リモート」>「プッシュ」を選択します。
リモート・リポジトリへプッシュ・ウィザードが表示されます。

[.feature]
--
image::images/push-small.png[role="left", link="images/push.png"]
--


1. ウィザードのリモート・リポジトリ・ページで、構成済のリポジトリ(以前に構成されたリポジトリへのパスを使用する)または「Gitリポジトリの場所を指定」オプション(必要に応じて、まだアクセスされていないリモート・リポジトリへのパス、その名前、ログインとパスワードを定義する)を選択し、「次」をクリックします。
2. ローカル分岐を選択ページで、編集をプッシュする分岐を選択し、「次」をクリックします。
3. ローカル参照を更新ページで、ローカル・リポジトリの「リモート」ディレクトリ内の更新する分岐を選択し、「終了」をクリックします。
指定したリモート・リポジトリの分岐がローカル分岐の最新の状態で更新されます。


== サマリー

このチュートリアルでは、IDEのGitサポートを使用する場合の標準的なワークフローを説明することによって、IDEの基本的なバージョン管理タスクの実行方法を示しました。IDEに含まれるGit固有の機能の一部を紹介しながら、バージョン管理されたプロジェクトの設定とバージョン管理されたファイルの基本タスクの実行方法を示しました。

link:/about/contact_form.html?to=3&subject=Feedback:%20Using%20Git%20Support%20in%20NetBeans%20IDE[+このチュートリアルに関するご意見をお寄せください+]



== 関連項目

関連する資料については、次のドキュメントを参照してください。

* link:clearcase.html[+NetBeans IDEでのClearCaseサポートの使用+]
* link:subversion.html[+NetBeans IDEでのSubversionサポートの使用+]
* link:mercurial.html[+NetBeans IDEでのMercurialサポートの使用+]
* link:cvs.html[+NetBeans IDEでのCVSサポートの使用+]
* link:http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG234[+NetBeans IDEによるアプリケーションの開発+]の_バージョン管理によるアプリケーションのバージョニング_
