EclipseからGitを使う

Git入門 – 基本概念と仕組み

1. はじめに

Gitは、ソースコードを管理するためのバージョン管理システム(VCS: Version Control System)です。
EclipseでGitを使う前に、基本的な概念を理解しておくとスムーズに作業できます。

バージョン管理は、プログラムや文書などの変更履歴を記録し、いつでも過去の状態に戻せる仕組みです。

バージョン管理でいつでも元に戻せる


2. Gitとは?

Gitは、「分散型バージョン管理システム」です。
ソースコードの変更履歴を記録し、「誰が・いつ・どこを・どのように変更したか」
を追跡できます。

各開発者がローカル環境で作業し、後で変更を統合できます。

誤った変更の修正や、誰がどの部分を編集したかの追跡が可能となり、共同作業の効率と安全性が大幅に向上します。

2.1 Gitの特徴

1.履歴管理

変更履歴を保持し、過去の状態に戻せる

2.分散型

Gitの最大の特徴は分散型であることです。従来の中央集権型(例: SVN)では、1つのサーバーで履歴を管理しますが、Gitは各開発者のローカル環境にリポジトリ全体の履歴を保持します。英語の【Repository】にはもともと倉庫という意味があります。

そうすることで、ネットワーク不要で過去の履歴を確認・変更でき、サーバー障害時でも作業を継続できます。また、ブランチの作成や統合が高速で、開発チームの効率が向上します。


Gitは分散型バージョン管理システム

3.ブランチ機能

Gitのブランチとは、ソースコードの変更を独立して管理できる仕組みです。【Branch】は英語で枝のことですからイメージしやすいと思います。

本流(main)を維持しつつ、新機能開発やバグ修正を別のブランチで行い、完成後に統合(マージ)できます。そうすることで、本番環境を壊さず並行開発が可能になり、チーム開発の効率が向上します。また、ブランチ作成・切り替えが高速で、実験的な開発も手軽に行えます。

ブランチのイメージ

3. Gitの基本概念

Gitでは、「リポジトリ」 という単位でコードを管理します。

3.1 リポジトリ(Repository)

  • Gitで管理されているプロジェクトのこと
  • ローカルリポジトリ(自分のPC内)と リモートリポジトリ(GitHubなど)がある

3.2 ワークフローの3つの領域

Gitでは、ファイルが以下の3つの領域を移動しながら管理されます。

領域役割
ワーキングディレクトリ(作業ディレクトリ)現在作業しているファイル
ステージングエリア(インデックス)コミット前に確認するための一時保存領域
リポジトリ(ローカル)コミット済みの履歴が保存される

流れ:

  1. ファイルを作成・変更 → ワーキングディレクトリ
  2. コミットするファイルを選択 → ステージングエリア 
  3. コミット(確定) → ローカルリポジトリ

4. Gitの基本操作

4.1 Gitの主要コマンド


Gitの主要コマンド
コマンド説明
git init新しいリポジトリを作成
git clone <URL>リモートリポジトリをクローン(コピー)
git status現在の状態を確認
git add <ファイル名>ステージングエリアに追加
git commit -m "コメント"コミット(確定)
git pushリモートリポジトリにアップロード
git pullリモートの最新状態を取得
git branchブランチを一覧表示
git checkout <ブランチ名>ブランチを切り替え
git merge <ブランチ名>他のブランチを統合

5. Gitのブランチとは?

ブランチ(Branch) とは、コードの別バージョンを作成する機能 です。
例えば、開発チームで作業する際、以下のようにブランチを使い分けます。

ブランチ名役割
main(またはmaster安定版(本番リリース用)
develop開発用の最新状態
feature/新機能新機能開発ブランチ
bugfix/修正バグ修正ブランチ

ブランチの流れ

  1. feature/login というブランチを作成
  2. ログイン機能を開発
  3. develop ブランチにマージして統合
  4. 問題なければ main に反映

6. GitHubとは?

GitHubは、Gitリポジトリをクラウド上で管理するサービス です。

6.1 GitHubの主な機能

  • リモートリポジトリの保存
  • チームでの共同開発
  • プルリクエスト(Pull Request)によるレビュー

6.2 GitHubの基本操作

  1. GitHubでリポジトリを作成
  2. git clone <URL> でローカルにコピー
  3. git push でコードをアップロード

7. Gitのメリット

メリット説明
履歴管理過去のバージョンに戻せる
並行作業が可能ブランチを使えば複数人で開発できる
バックアップGitHubなどに保存すればPCが壊れても大丈夫

Gitはソースコードの変更を管理する強力なツールです。
EclipseでGitを使う前に、基本的な概念を理解しておきましょう!

次のステップでは、EclipseとGitを連携させる方法を学びます。

EclipseでGitを使う – 実践編

EclipseとGitを連携させることで、開発環境内でバージョン管理が容易になります。以下に、EclipseでGitを利用するための手順をまとめます。

1. EGitプラグインの確認とインストール

Eclipseには通常、Git統合プラグインであるEGitが標準で組み込まれています。まず、EGitがインストールされているか確認しましょう。

  1. Eclipseを起動します。
  2. メニューから 「ウィンドウ」 > 「パースペクティブ」 > 「パースペクティブを開く」 > 「その他」を選択します。
  3. リストに 「Git」 が表示されているか確認します。
「ウィンドウ」 > 「パースペクティブ」 > 「パースペクティブを開く」 > 「その他」

もし「Git」が表示されていない場合は、講師に相談してEGitをインストールしてください。

2. Gitリポジトリの設定

EGitのインストールが完了したら、EclipseでGitリポジトリを設定します。

2.1. リモートリポジトリのクローン

既存のリモートリポジトリ(例:GitHub)をクローンする手順です。

  1. Gitパースペクティブ に切り替えます。
    • メニューから 「ウィンドウ」 > 「パースペクティブ」 > 「パースペクティブを開く」 を選択し、「Git」 を選びます。
  2. 「Gitリポジトリー」 ビューで 「Gitリポジトリをクローンして追加」 アイコンをクリックします。
  3. 「ソースGitリポジトリ」 画面で、リモートリポジトリのURLを入力し、必要に応じてユーザー名パスワードを入力します。
  4. 「次へ」 をクリックし、クローンするブランチを選択します。
  5. 「次へ」 をクリックし、ローカルディレクトリの保存場所を指定して 「完了」 をクリックします。

2.2. 新しいリポジトリの作成

新規にリポジトリを作成する手順です。

  1. Gitパースペクティブ に切り替えます。
  2. 「Gitリポジトリー」 ビューで空白部分を右クリックし、「リポジトリーの作成」 を選択します。
  3. 「リポジトリー・ディレクトリー」 に新しいリポジトリのパスを指定し、「完了」 をクリックします。

3. プロジェクトのGitリポジトリへの追加

EclipseプロジェクトをGitで管理するための手順です。

  1. パッケージエクスプローラー で対象のプロジェクトを右クリックします。
  2. 「チーム」 > 「プロジェクトをGitリポジトリに共有」 を選択します。
  3. 既存のリポジトリを選択するか、新しいリポジトリを作成し、「完了」 をクリックします。

4. Gitの基本操作

Eclipse上での主なGit操作の手順です。

4.1. コミット

  1. 変更したファイルを右クリックし、「チーム」 > 「コミット」 を選択します。
  2. 「ステージされていない変更」 から 「ステージされた変更」 へファイルをドラッグします。
  3. コミットメッセージを入力し、「コミット」 をクリックします。

4.2. プッシュ

  1. プロジェクトを右クリックし、「チーム」 > 「リモート」 > 「プッシュ」 を選択します。
  2. リモートリポジトリの情報を確認し、「次へ」 をクリックします。
  3. 「完了」 をクリックします。

4.3. プル

  1. プロジェクトを右クリックし、「チーム」 > 「リモート」 > 「プル」 を選択します。
  2. リモートの変更がローカルに反映されます。

以上の手順で、EclipseとGitの連携が可能になります。これにより、Eclipse内で効率的にバージョン管理を行うことができます。

EclipseでGitを活用する練習問題

以下は、Gitのコマンドライン操作に関する練習問題です。

【問題】と【解答例】に分かれており、解答例は展開すると見ることができます。

なお、実際の作業環境やリモートリポジトリのURLなどは各自の環境に合わせて適宜読み替えてください。

──────────────────────── 【個人向け練習問題】

■【問題1: リポジトリの初期化と基本操作】

  1. 新規プロジェクト用のディレクトリ(例:MyProject)を作成し、そのディレクトリ内で作業を開始してください。
  2. 任意のファイル(例:hello_world.txt)を作成し、適当な内容(例:"Hello, world!")を記述してください。
  3. コマンドラインで git init を実行してローカルリポジトリを初期化してください。
  4. 作成したファイルをステージングし、"初回コミット"というメッセージでコミットしてください。
  5. git log コマンドでコミット履歴を確認し、内容を把握してください。

解答例(ここをクリックすると表示されます)

# 1. プロジェクトディレクトリの作成と移動
mkdir MyProject
cd MyProject

# 2. ファイル作成と内容の記述
echo "Hello, world!" > hello_world.txt

# 3. Gitリポジトリの初期化
git init

# 4. ステージングとコミット
git add hello_world.txt
git commit -m "初回コミット"

# 5. コミット履歴の確認
git log --oneline


■【問題2: ブランチの作成、切替、マージの練習】

  1. 既存のリポジトリで、新たなブランチ feature_branch を作成し、そのブランチに切り替えてください。
  2. feature_branch 上で、例として hello_world.txt に「Feature branch modification」という追記を行い、コミットしてください。
  3. メインブランチ(mainまたはmaster)に戻り、別の変更(例:「Main branch modification」の追記)を加えてコミットしてください。
  4. 再度、メインブランチに feature_branch の変更をマージし、必要に応じてマージコンフリクトが発生した場合は解消してください。

解答例(ここをクリックすると表示されます)

# 1. ブランチ作成と切替
git branch feature_branch
git checkout feature_branch

# 2. ブランチ上での変更とコミット
echo "Feature branch modification" >> hello_world.txt
git add hello_world.txt
git commit -m "feature_branchの変更"

# 3. メインブランチに戻って変更を加える
git checkout main   # または "git checkout master"
echo "Main branch modification" >> hello_world.txt
git add hello_world.txt
git commit -m "main branchの変更"

# 4. ブランチのマージ
git merge feature_branch
# ※もしコンフリクトが発生した場合は、対象ファイルを編集し、
#    git add および git commit で解決してください。


■【問題3: リモートリポジトリとの連携】

  1. GitHub(またはGitLab、Bitbucketなど)上でリモートリポジトリを作成してください。
  2. ローカルリポジトリに対して、git remote add コマンドでリモートリポジトリのURLを設定してください。
  3. メインブランチの内容をリモートリポジトリへ初回プッシュしてください。
  4. リモートの変更を取り込むため、git pull(または git fetch)を実行してください。

解答例(ここをクリックすると表示されます)

# 2. リモートリポジトリの追加(URLは各自のものに置き換え)
git remote add origin https://github.com/username/MyProject.git

# 3. 初回プッシュ(mainまたはmasterを使用)
git push -u origin main

# 4. リモートの変更を取得
git pull origin main


■【問題4: コミット履歴の確認とリバート操作】

  1. git log コマンド(例:git log --oneline --graph)を使って、コミット履歴を分かりやすく表示してください。
  2. 表示された履歴の中から、任意のコミット(例:コミットハッシュが "abc1234" のもの)を選び、その変更を打ち消すために git revert を実行してください。
  3. 再度 git log で、リバート操作が正しく反映されていることを確認してください。

解答例(ここをクリックすると表示されます)

# 1. コミット履歴の確認
git log --oneline --graph

# 2. 任意のコミットのリバート(例としてコミットハッシュ abc1234 を使用)
git revert abc1234
# ※エディタが起動した場合は、リバートコミットメッセージを確認して保存・終了してください。

# 3. 再度履歴を確認
git log --oneline --graph


■【問題5: タグ付けとリリース管理】

  1. 安定版とするコミット(例:最新のコミット)に対して、git tag -a コマンドを用い、タグ(例: v1.0.0)を付与してください。
  2. git tag コマンドでタグ一覧を確認してください。
  3. タグ情報をリモートリポジトリへプッシュしてください。

解答例(ここをクリックすると表示されます)

# 1. タグの付与
git tag -a v1.0.0 -m "リリース版1.0.0"

# 2. タグ一覧の確認
git tag

# 3. タグ情報のリモートへのプッシュ
git push origin --tags

──────────────────────── 【チーム向け練習問題】

■【問題1: 共同開発の基本ワークフローシミュレーション】

  1. チーム全員が共通のリモートリポジトリ(例:GitHubのリポジトリ)を git clone でローカルに取得してください。
  2. 各自、担当する機能ごとに独自のブランチ(例: feature_A, feature_B など)を作成し、機能追加や修正を行い、コミットしてください。
  3. 各自の作業内容をリモートに git push してください。
  4. 定期的に、メインブランチ(mainまたはdevelop)に対して各ブランチをマージし、発生したコンフリクトを解消するシナリオを実施してください。

解答例(ここをクリックすると表示されます)

# ① リポジトリのクローン
git clone https://github.com/username/TeamProject.git
cd TeamProject

# ② 各自の作業ブランチの作成(例:メンバーAの場合)
git checkout -b feature_A

# ③ 作業(例: ファイルの変更)とコミット
echo "新機能Aの実装" >> featureA.txt
git add featureA.txt
git commit -m "feature_A: 新機能Aの実装"
git push -u origin feature_A

# ④ メインブランチへの統合(例:メンバーAがマージ作業)
git checkout main
git pull origin main
git merge feature_A
# ※コンフリクトが発生した場合は、適宜編集し git add / git commit で解決
git push origin main


■【問題2: 同一ファイルの同時編集によるコンフリクトの解決】

  1. チームメンバー間で、同一ファイル(例:shared.txt)の同じ部分に対して異なる変更を加え、それぞれコミットしてください。
  2. 各自が変更をリモートにプッシュし、結果としてコンフリクトが発生する状況を作り出してください。
  3. git pull を実行してコンフリクトを検出し、手動でファイルを編集してコンフリクトを解消してください。

解答例(ここをクリックすると表示されます)

# 【メンバーAの場合】
echo "メンバーAの変更" >> shared.txt
git add shared.txt
git commit -m "shared.txtにメンバーAの変更を追加"
git push origin main

# 【メンバーBの場合】
echo "メンバーBの変更" >> shared.txt
git add shared.txt
git commit -m "shared.txtにメンバーBの変更を追加"
git push origin main   # この際、リモートにメンバーAの変更があるためコンフリクトが発生

# 【メンバーBがコンフリクト解消】
git pull origin main
# shared.txt 内のコンフリクト部分を手動で編集して解消
git add shared.txt
git commit -m "shared.txtのコンフリクト解消"
git push origin main


(メンバーごとに異なる操作例を示します)



■【問題3: プルリクエストに相当するレビュー・統合プロセスの実施】

  1. 各メンバーが作業ブランチ(例:feature_C)で機能を実装し、リモートにプッシュしてください。
  2. 他のメンバーが git fetchgit checkout を利用して、そのブランチの内容を確認し、コードレビューを実施してください。
  3. レビューの結果、必要な修正を実施後、再度コミット・プッシュし、最終的に作業ブランチをメインブランチにマージしてください。

解答例(ここをクリックすると表示されます)

# 【作業ブランチ作成と初回作業】(例:メンバーC)
git checkout -b feature_C
echo "Feature Cの実装" > featureC.txt
git add featureC.txt
git commit -m "feature_C: 実装開始"
git push -u origin feature_C

# 【レビュー後の修正】(同じブランチ内で)
echo "レビュー指摘に基づく修正" >> featureC.txt
git add featureC.txt
git commit -m "feature_C: レビュー対応修正"
git push origin feature_C

# 【メインブランチへのマージ】
git checkout main
git merge feature_C
git push origin main


■【問題4: 大規模変更時の統合シナリオ】

  1. チーム全体で大規模な機能追加またはリファクタリングを行うため、各自が別のブランチ(例:feature_large_A、feature_large_B)で作業してください。
  2. 各ブランチで、同一ファイル(例:fileA.txt)などに対して相互に影響する変更を意図的に加え、統合時に複数のコンフリクトが発生する状況を作り出してください。
  3. チーム内で役割分担し、git merge や必要に応じて git rebase -i を利用して、発生したコンフリクトを解消してください。

解答例(ここをクリックすると表示されます)

# 【メンバーAの場合:feature_large_A ブランチ】
git checkout -b feature_large_A
echo "大規模変更A" >> fileA.txt
git add fileA.txt
git commit -m "feature_large_A: 変更実施"
git push -u origin feature_large_A

# 【メンバーBの場合:feature_large_B ブランチ】
git checkout -b feature_large_B
echo "大規模変更B" >> fileA.txt
git add fileA.txt
git commit -m "feature_large_B: 変更実施"
git push -u origin feature_large_B

# 【統合作業(例:メンバーAがメインブランチに統合する場合)】
git checkout main
git pull origin main
git merge feature_large_A
git merge feature_large_B
# ※この段階で fileA.txt にコンフリクトが発生した場合、手動で編集して解消してください
git add fileA.txt
git commit -m "大規模変更統合: コンフリクト解消"
git push origin main


■【問題5: リリースブランチの作成とタグ管理によるリリースプロセスのシミュレーション】

  1. 開発が一区切りした段階で、git checkout -b release_v1.0 コマンドを用いてリリースブランチを作成してください。
  2. リリースブランチ上で最終的なバグ修正や微調整を行い、安定版として仕上げてください。
  3. 安定版となったコミットに対して、タグ(例:v1.0.0)を付与してください。
  4. リリースブランチとタグ情報をリモートリポジトリにプッシュしてください。

解答例(ここをクリックすると表示されます)

# 1. リリースブランチの作成
git checkout -b release_v1.0

# 2. リリース準備の変更(例: バグ修正や最終調整)
echo "バグ修正および最終調整" >> release_notes.txt
git add release_notes.txt
git commit -m "release_v1.0: バグ修正および最終調整"

# 3. タグ付け
git tag -a v1.0.0 -m "リリース版1.0.0"

# 4. リリースブランチとタグのプッシュ
git push origin release_v1.0
git push origin --tags

────────────────────────
必要に応じて、実際の環境でエラーが発生した場合はその内容を確認し、適宜対処方法を調査・記録すると良いでしょう。


学んだこと 

□ EclipseでGitリポジトリを作成・共有
□ GitHubとEclipseを連携してプッシュ・プル
□ ブランチの作成と切り替え
□ 競合の解決とマージ
□ Pull Requestを使ったレビュー

この練習問題を実践すれば、EclipseでGitを使いこなせるようになります!
ぜひ、実際の開発プロジェクトでも活用してみてください。

セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。