Git入門(NetBeans からの使い方)

Git入門の第3弾です (^^)

前回は SourceTree の使い方を紹介しましたが、今回は一番使用頻度の高いお気に入りのツールである NetBeans から Git を使ってみます

Gitを使うのが初めての人は、最初にこの記事を見ても判り難いと思いますので、先にこの2つの記事を見てもらって、実際に SourceTree で基本的な操作を試して見ることをお勧めします

Gitを使用する準備

いきなりですが、ローカルリポジトリの作成(新規/クローン)に関しては SourceTree を使用します

※下記記事で Git サポートについてひと通り紹介されています。NetBeans でリポジトリを作成する方法も紹介されています

NetBeans IDEでのGitサポートの使用

ということで、とりあえずローカルリポジトリは既に作成されている状態から始めます

NetBeansで作業を行っているフォルダにローカルリポジトリを作成しておけば、NetBeansのプロジェクトでそのフォルダを開けば自動的にリポジトリデータを読み込んで Git が使えるようになります

既に準備OKです (^^)

Git 状態表示の設定

NetBeans では Git での管理状態が少し判り難いところもあるので、メニュー項目の 表示 から下記設定が有効になっているか確認して下さい

  • 差分サイドバーを表示
  • バージョンラベルを表示

現在のブランチやファイルの修正箇所等が分かりやすくなります (^^)

さらにサイドパネルに リポジトリブラウザ を表示させます

リポジトリのあるフォルダーを右クリックしてメニューから Git → リポジトリブラウザを指定します

clip_image001

表示されたリポジトリブラウザをサイドパネルに設置すると操作しやすくなります

clip_image002

リポジトリブラウザから右クリックでメニューを表示させれば、状況に合わせた項目が表示されるのでメニューが深くなく操作し易くなります

NetBeans で使用されている Git関連の名称について

日本語訳がちょっと独特なのか Gitでよく使われている言葉と微妙に違うので戸惑います

索引 インデックス(ステージ)
分岐 ブランチ
変更内容を元に戻す 破棄
変更を表示 ファイルステータスウィンドウ表示
   

等々

おいおい慣れると思いますが (^_^;)

ローカルリポジトリに対する主な操作コマンド

作業ブランチの作成

作業用に master ブランチの最初の位置に TestBranch を作成してみます

※現在は、master に最初のコミットがあるだけので、いきなり作業用ブランチを作成しますが、今後は作業が進むにつれ、ブランチを作成する基点を切り替えてチェックアウトする必要もあります

マスターを右クリックして 分岐の作成 を選択します

clip_image001[4]

ブランチ(分岐名)を指定します
また、ブランチ作成後は、そのブランチへ切り替えたいので、作成した分岐をチェックアウト をチェックします

clip_image002[4]

複数のコミットが既にある場合には、リビジョン の 選択 ボタンから基点とするリビジョンを選択することが出来ます

clip_image003

リビジョン選択後に 作成 ボタンをクリックしてブランチを作成します

clip_image004

リポジトリブラウザで作業用ブランチ TestBranch が作成され、チェックアウトされました

ファイル作業

通常のプログラム作成及びデバッグ作業を行います

作業はバグ対応や機能追加の処理毎に行い、1つの処理の作業終了ごとにコミットを行います

※1つのコミットにいくつもの処理を含まないように 1機能1コミット で管理していきます

メニューから 変更を表示 を指定して、画面下部にファイルステータスウィンドウを表示させます

ここへは、ファイルの追加、削除、変更があれば自動的に表示されます
ステータスを見ればインデックスに追加しているかどうか分かります

clip_image005

ここの名前の説明が判り難いのですが、表示する時は一番左のアイコン(HEADと作業ツリー間の変更)を選択しておけばインデックス(索引)の状態は把握できます

clip_image006

 ※ NetBeans IDEでのGitサポートの使用 から引用した説明図

最初のアイコンの HEADと作業ツリー間の変更 は、作業ツリーで 追加、削除、変更のあったファイルを表示します。また、ステータス部の表示形式によりインデックスにステージされているかどうかを表します。

ステージング前 : -/[状態]
ステージング後 : [状態]/-

他の2つのアイコンは、次の状態を表示します

  • HEADと索引間の変更 :インデックスにステージしたファイル
  • 索引と作業ツリー間の変更 :作業ツリーのファイル

※最初のアイコンを選んでおけば両方の状態がわかります

追加(ファイル変更)

NetBeansでファイルを編集すると自動的に、ファイルステータスウィンドウに -/変更 と表示されます。但し、まだインデックスには追加されていません

インデックスに追加するには、メニューから追加を実行します

clip_image007

追加(新規ファイル)

NetBeansのプロジェクトウィンドウにファイルを新規に追加すると自動的にインデックスへ追加され、ファイルステータスウィンドウに 追加済/- と表示されます

削除ファイル

NetBeansのプロジェクトウィンドウからファイルを削除すると自動的にインデックスへ追加され、 ファイルステータスウィンドウに 削除済/- と表示されます

破棄

インデックスから除外したり、修正したファイルの変更内容を元に戻します

操作は、変更内容を元に戻す から行います

clip_image008

どのように戻すかダイアログが表示されます

clip_image009

このダイアログも判り難い (^_^;)

  1. 作業ツリーと索引のコミットされていない変更を元に戻す
  2. 作業ツリーのコミットされていない変更を索引の状態に戻す
  3. 索引のコミットされていない変更のみをHEADに戻す

簡潔に言えばこうなります

  1. ファイルの変更を破棄
  2. インデックスされていないファイルの変更を破棄
  3. インデックスの登録から除く

まとめるとファイルの変更を破棄する時は1をインデックスから取り除く時は3を選択ということで良いと思います (^^)

具体的な動作としては次のようになります

ファイル修正の場合

  1. ファイルの変更を破棄
  2. インデックスされていないファイルの変更を破棄
  3. インデックスの登録から除かれ  -/変更 表示となる

新規追加ファイルの場合

  1. インデックスから除かれ  -/追加済 表示となる
  2. 変化なし
  3. インデックスから除かれ  -/追加済 表示となる

削除ファイルの場合

  1. 削除ファイルを破棄、プロジェクトウィンドウにファイルを戻す
  2. インデックスされていない削除ファイルを破棄
  3. インデックスから除かれ  -/削除済 表示となる

コミット

メニューからコミットを実行します

ダイアログが表示されるので、コミットメッセージを入力します

clip_image010

タブを切り替えると差分表示により変更点を確認することが出来ます

clip_image011

コミットボタンをクリックして実行します

ログの確認

メニューから 履歴を表示 します

そのままでは何も表示されないので、検索条件には何も指定せずに 検索 ボタンをクリック

clip_image012

コミット履歴を見ることが出来ます

※NetBeans には、コミットグラフの表示がないようです

コミットを元に戻す(Revert)

コミット履歴を右クリックしてメニューから コミットを元に戻す を実行するとダイアログが表示されます

clip_image013

元に戻してみます

何も変わらないような…

コミットログの検索ボタンを再クリック

clip_image014

コミットの打ち消し(Revert) が行われてました

コミットのリセット

リセットは、コミット履歴からのメニューには表示されません (^_^;)

リポジトリブラウザから指定します

clip_image015

ダイアログが表示されるのでリセットする位置とタイプ(soft/mixed/hard)を選択して実行します

clip_image016

※ここのタイプの違いは Git入門(SourceTree の使い方) を参照して下さい

コミットログを再表示

clip_image017

うまくいったようです

チェックアウト

作業ブランチを作成する基点に切り替えます

作業が進むにつれ、チェックアウトする基点は変わってきます

ここではマスターを右クリックしてリビジョンのチェックアウトを選択します

clip_image018

これで作業ツリーのファイルはこの時点の状態に戻ります

ファイル履歴表示

clip_image019

チェックアウトは、作業ブランチを指定したコミットリビジョン時の状態に復元しますが、ファイルの履歴表示からはファイル単位に差分表示を確認しながら、ファイル毎にチェックアウトを行うことが出来ます

NetBeansの履歴は、バージョン管理システムでコミットした以外にもファイル保存毎にローカル履歴が作成されているので、履歴画面から任意の時点のログと差分表示で変更箇所を確認したり、変更を部分単位で戻したりすることが簡単に出来ます

この辺りは、NetBeansはとても良く出来ています (^^)

マージ

ローカル master に作業ブランチ TestBranch をマージしてみます

clip_image020

ローカルブランチ master にマージする作業ブランチを選択します

clip_image021

マージするコミットリビジョンを変更する場合は、選択ボタンで表示されるダイアログから変更することが出来ます

clip_image022

マージ ボタンをクリックして実行します

履歴表示を見てみると、master と TestBranch ブランチの位置が同じになりマージされたことが分かります

clip_image023

※NetBeans ではコミットグラフを見ることが出来ないので、コミットグラフを確認したい場合は SourceTree を起動すれば確認することが出来ます

コンフリクト

マージした時にコンフリクトが発生すると、ダイアログが表示されます

clip_image024

競合を解決 をクリックするとマージ競合リゾルバという下記のような画面が表示されるので内容を確認して修正します

マージ作業がいい感じで出来ます (^^)

clip_image025

あるいは、競合箇所を確認して、自分でエディタから修正することも出来ます

clip_image026

いずれかの方法で競合を解決したら、コミットしてマージを完了させます

clip_image027

分岐を削除(ブランチの削除)

現在のブランチ以外のブランチを削除することが出来ます

分岐を削除 を選択して作業ブランチ TestBranch を削除してみます

clip_image028

ダイアログが表示されるのでOKします

clip_image029

リポジトリブラウザから自動的にブランチが削除されました

clip_image030

 

とりあえず通常のプログラム開発作業時のバージョン管理操作に関してはこれだけ使えれば何とかなります

それにしても、コミットグラフがないのがとても残念です

ローカルリポジトリとリモートリポジトリ間の操作コマンド

フェッチ/プル

リモートリポジトリに反映する前に、現在のリモート origin/master ブランチの状態を取得して差異があれば ローカル master に取り込みます

リポジトリブラウザからフェッチを選択します

clip_image001[6]

違いがあれば、結果欄に 履歴を検索 のリンクが作成されます

clip_image002[6]

リンクをクリックするとフェッチしたログが表示されます

clip_image003[4]

うーん 見にくいです

フェッチ/プルは、コミットグラフを表示できる SourceTree のほうが分かりやすいので、SourceTree の使用をお勧めします (^^)

使い方は、Git入門(SourceTree の使い方) を参照して下さい

プッシュ

この操作も SourceTree の使用がお勧めです

sourceTree からフェッチ/プルを行い同期を取り、その後でプッシュすればスムーズにリモートリポジトリへ反映できると思います (^^)

 

まとめ

NetBeans だけで Git を使いこなすのは、私には難しかったです

NetBeansは統合開発環境なので、専用のバージョン管理ツールと比べると使いにくい部分もあります。その辺は素直に SoureTree を併用することをお勧めします (^^)

基本的には、リモートリポジトリにアクセスする操作は、SourceTree を使用、それ以外の通常のプログラム開発時の操作では NetBeans を使用するのが良さそうです

NetBeans から行う操作

  • 作業ブランチの作成
  • 追加(ファイル変更)
  • 追加ファイル
  • 削除ファイル
  • 破棄
  • コミット
  • コミットを元に戻す(Revert)
  • コミットのリセット
  • チェックアウト
  • ファイルの履歴/差分表示
  • コンフリクトの解消(作業ブランチのマージ)
  • 作業ブランチの削除

SourceTree から行う操作

  • ローカルリポジトリの作成(新規/クローン)
  • フェッチ
  • プル
  • プッシュ
  • コミットグラフの確認

今はまだ作業により使い分けたほうが便利なのですが、この2つのツールが合わされば最強のツールになると思います (^^)

 


まとめ記事紹介

go-to-top