Git入門の第3弾です (^^)
前回は SourceTree の使い方を紹介しましたが、今回は一番使用頻度の高いお気に入りのツールである NetBeans から Git を使ってみます
Gitを使うのが初めての人は、最初にこの記事を見ても判り難いと思いますので、先にこの2つの記事を見てもらって、実際に SourceTree で基本的な操作を試して見ることをお勧めします
Gitを使用する準備
いきなりですが、ローカルリポジトリの作成(新規/クローン)に関しては SourceTree を使用します
※下記記事で Git サポートについてひと通り紹介されています。NetBeans でリポジトリを作成する方法も紹介されています
ということで、とりあえずローカルリポジトリは既に作成されている状態から始めます
NetBeansで作業を行っているフォルダにローカルリポジトリを作成しておけば、NetBeansのプロジェクトでそのフォルダを開けば自動的にリポジトリデータを読み込んで Git が使えるようになります
既に準備OKです (^^)
Git 状態表示の設定
NetBeans では Git での管理状態が少し判り難いところもあるので、メニュー項目の 表示 から下記設定が有効になっているか確認して下さい
- 差分サイドバーを表示
- バージョンラベルを表示
現在のブランチやファイルの修正箇所等が分かりやすくなります (^^)
さらにサイドパネルに リポジトリブラウザ を表示させます
リポジトリのあるフォルダーを右クリックしてメニューから Git → リポジトリブラウザを指定します
表示されたリポジトリブラウザをサイドパネルに設置すると操作しやすくなります
リポジトリブラウザから右クリックでメニューを表示させれば、状況に合わせた項目が表示されるのでメニューが深くなく操作し易くなります
NetBeans で使用されている Git関連の名称について
日本語訳がちょっと独特なのか Gitでよく使われている言葉と微妙に違うので戸惑います
索引 | インデックス(ステージ) |
分岐 | ブランチ |
変更内容を元に戻す | 破棄 |
変更を表示 | ファイルステータスウィンドウ表示 |
等々
おいおい慣れると思いますが (^_^;)
ローカルリポジトリに対する主な操作コマンド
作業ブランチの作成
作業用に master ブランチの最初の位置に TestBranch を作成してみます
※現在は、master に最初のコミットがあるだけので、いきなり作業用ブランチを作成しますが、今後は作業が進むにつれ、ブランチを作成する基点を切り替えてチェックアウトする必要もあります
マスターを右クリックして 分岐の作成 を選択します
ブランチ(分岐名)を指定します
また、ブランチ作成後は、そのブランチへ切り替えたいので、作成した分岐をチェックアウト をチェックします
複数のコミットが既にある場合には、リビジョン の 選択 ボタンから基点とするリビジョンを選択することが出来ます
リビジョン選択後に 作成 ボタンをクリックしてブランチを作成します
リポジトリブラウザで作業用ブランチ TestBranch が作成され、チェックアウトされました
ファイル作業
通常のプログラム作成及びデバッグ作業を行います
作業はバグ対応や機能追加の処理毎に行い、1つの処理の作業終了ごとにコミットを行います
※1つのコミットにいくつもの処理を含まないように 1機能1コミット で管理していきます
メニューから 変更を表示 を指定して、画面下部にファイルステータスウィンドウを表示させます
ここへは、ファイルの追加、削除、変更があれば自動的に表示されます
ステータスを見ればインデックスに追加しているかどうか分かります
ここの名前の説明が判り難いのですが、表示する時は一番左のアイコン(HEADと作業ツリー間の変更)を選択しておけばインデックス(索引)の状態は把握できます
※ NetBeans IDEでのGitサポートの使用 から引用した説明図
最初のアイコンの HEADと作業ツリー間の変更 は、作業ツリーで 追加、削除、変更のあったファイルを表示します。また、ステータス部の表示形式によりインデックスにステージされているかどうかを表します。
ステージング前 : -/[状態]
ステージング後 : [状態]/-
他の2つのアイコンは、次の状態を表示します
- HEADと索引間の変更 :インデックスにステージしたファイル
- 索引と作業ツリー間の変更 :作業ツリーのファイル
※最初のアイコンを選んでおけば両方の状態がわかります
追加(ファイル変更)
NetBeansでファイルを編集すると自動的に、ファイルステータスウィンドウに -/変更 と表示されます。但し、まだインデックスには追加されていません
インデックスに追加するには、メニューから追加を実行します
追加(新規ファイル)
NetBeansのプロジェクトウィンドウにファイルを新規に追加すると自動的にインデックスへ追加され、ファイルステータスウィンドウに 追加済/- と表示されます
削除ファイル
NetBeansのプロジェクトウィンドウからファイルを削除すると自動的にインデックスへ追加され、 ファイルステータスウィンドウに 削除済/- と表示されます
破棄
インデックスから除外したり、修正したファイルの変更内容を元に戻します
操作は、変更内容を元に戻す から行います
どのように戻すかダイアログが表示されます
このダイアログも判り難い (^_^;)
- 作業ツリーと索引のコミットされていない変更を元に戻す
- 作業ツリーのコミットされていない変更を索引の状態に戻す
- 索引のコミットされていない変更のみをHEADに戻す
簡潔に言えばこうなります
- ファイルの変更を破棄
- インデックスされていないファイルの変更を破棄
- インデックスの登録から除く
まとめるとファイルの変更を破棄する時は1を、インデックスから取り除く時は3を選択ということで良いと思います (^^)
具体的な動作としては次のようになります
ファイル修正の場合
- ファイルの変更を破棄
- インデックスされていないファイルの変更を破棄
- インデックスの登録から除かれ -/変更 表示となる
新規追加ファイルの場合
- インデックスから除かれ -/追加済 表示となる
- 変化なし
- インデックスから除かれ -/追加済 表示となる
削除ファイルの場合
- 削除ファイルを破棄、プロジェクトウィンドウにファイルを戻す
- インデックスされていない削除ファイルを破棄
- インデックスから除かれ -/削除済 表示となる
コミット
メニューからコミットを実行します
ダイアログが表示されるので、コミットメッセージを入力します
タブを切り替えると差分表示により変更点を確認することが出来ます
コミットボタンをクリックして実行します
ログの確認
メニューから 履歴を表示 します
そのままでは何も表示されないので、検索条件には何も指定せずに 検索 ボタンをクリック
コミット履歴を見ることが出来ます
※NetBeans には、コミットグラフの表示がないようです
コミットを元に戻す(Revert)
コミット履歴を右クリックしてメニューから コミットを元に戻す を実行するとダイアログが表示されます
元に戻してみます
何も変わらないような…
コミットログの検索ボタンを再クリック
コミットの打ち消し(Revert) が行われてました
コミットのリセット
リセットは、コミット履歴からのメニューには表示されません (^_^;)
リポジトリブラウザから指定します
ダイアログが表示されるのでリセットする位置とタイプ(soft/mixed/hard)を選択して実行します
※ここのタイプの違いは Git入門(SourceTree の使い方) を参照して下さい
コミットログを再表示
うまくいったようです
チェックアウト
作業ブランチを作成する基点に切り替えます
作業が進むにつれ、チェックアウトする基点は変わってきます
ここではマスターを右クリックしてリビジョンのチェックアウトを選択します
これで作業ツリーのファイルはこの時点の状態に戻ります
ファイル履歴表示
チェックアウトは、作業ブランチを指定したコミットリビジョン時の状態に復元しますが、ファイルの履歴表示からはファイル単位に差分表示を確認しながら、ファイル毎にチェックアウトを行うことが出来ます
NetBeansの履歴は、バージョン管理システムでコミットした以外にもファイル保存毎にローカル履歴が作成されているので、履歴画面から任意の時点のログと差分表示で変更箇所を確認したり、変更を部分単位で戻したりすることが簡単に出来ます
この辺りは、NetBeansはとても良く出来ています (^^)
マージ
ローカル master に作業ブランチ TestBranch をマージしてみます
ローカルブランチ master にマージする作業ブランチを選択します
マージするコミットリビジョンを変更する場合は、選択ボタンで表示されるダイアログから変更することが出来ます
マージ ボタンをクリックして実行します
履歴表示を見てみると、master と TestBranch ブランチの位置が同じになりマージされたことが分かります
※NetBeans ではコミットグラフを見ることが出来ないので、コミットグラフを確認したい場合は SourceTree を起動すれば確認することが出来ます
コンフリクト
マージした時にコンフリクトが発生すると、ダイアログが表示されます
競合を解決 をクリックするとマージ競合リゾルバという下記のような画面が表示されるので内容を確認して修正します
マージ作業がいい感じで出来ます (^^)
あるいは、競合箇所を確認して、自分でエディタから修正することも出来ます
いずれかの方法で競合を解決したら、コミットしてマージを完了させます
分岐を削除(ブランチの削除)
現在のブランチ以外のブランチを削除することが出来ます
分岐を削除 を選択して作業ブランチ TestBranch を削除してみます
ダイアログが表示されるのでOKします
リポジトリブラウザから自動的にブランチが削除されました
とりあえず通常のプログラム開発作業時のバージョン管理操作に関してはこれだけ使えれば何とかなります
それにしても、コミットグラフがないのがとても残念です
ローカルリポジトリとリモートリポジトリ間の操作コマンド
フェッチ/プル
リモートリポジトリに反映する前に、現在のリモート origin/master ブランチの状態を取得して差異があれば ローカル master に取り込みます
リポジトリブラウザからフェッチを選択します
違いがあれば、結果欄に 履歴を検索 のリンクが作成されます
リンクをクリックするとフェッチしたログが表示されます
うーん 見にくいです
フェッチ/プルは、コミットグラフを表示できる SourceTree のほうが分かりやすいので、SourceTree の使用をお勧めします (^^)
使い方は、Git入門(SourceTree の使い方) を参照して下さい
プッシュ
この操作も SourceTree の使用がお勧めです
sourceTree からフェッチ/プルを行い同期を取り、その後でプッシュすればスムーズにリモートリポジトリへ反映できると思います (^^)
まとめ
NetBeans だけで Git を使いこなすのは、私には難しかったです
NetBeansは統合開発環境なので、専用のバージョン管理ツールと比べると使いにくい部分もあります。その辺は素直に SoureTree を併用することをお勧めします (^^)
基本的には、リモートリポジトリにアクセスする操作は、SourceTree を使用、それ以外の通常のプログラム開発時の操作では NetBeans を使用するのが良さそうです
NetBeans から行う操作
- 作業ブランチの作成
- 追加(ファイル変更)
- 追加ファイル
- 削除ファイル
- 破棄
- コミット
- コミットを元に戻す(Revert)
- コミットのリセット
- チェックアウト
- ファイルの履歴/差分表示
- コンフリクトの解消(作業ブランチのマージ)
- 作業ブランチの削除
SourceTree から行う操作
- ローカルリポジトリの作成(新規/クローン)
- フェッチ
- プル
- プッシュ
- コミットグラフの確認
今はまだ作業により使い分けたほうが便利なのですが、この2つのツールが合わされば最強のツールになると思います (^^)