Eclipse + Git Bash で疑似チーム開発

# はじめに
統合開発環境であるEclipse内で管理しているコードをGitで管理（もっと言うと**疑似チーム開発**）する手順をまとめます。

GUIを使った手順に関する情報は豊富なんですが、コマンド（CUI）使った手順でうまくまとまった記事がないなあと思い、自分の備忘録のためにも本記事を書くことにしました。

* GUIのマウス操作面倒だから、コマンド使いたいんじゃ！！！
* やっぱりコマンド打ち込むのカッコイイよね～～
* Gitコマンド単体なら勉強したけどEclipseとの連携がわからない・・・
* Eclipseの中でブランチって切れるの？？

みたいな人向けです。

# 環境
* Windows10
* Eclipse2019
（ちなみに使用言語はJavaですが、どの言語でも手順は変わらないはず。）

# 前提
* GitHubアカウントを作成、リモートリポジトリを作成済みであること
* [Git for Windows](https://gitforwindows.org/)をインストール済みであること

# 手順
## 1. Gitの設定
Windowsのスタート画面からGit Bashを起動します。
<img width="300" alt="gitbash開く.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1643541/e5f62ea6-d04e-f0c7-b37d-f8020a1b5ce7.png">

このような画面が起動します。
![gitbash.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1643541/e3187390-0b11-ddb3-4ba3-07ae5cf3dd4d.png)

初めてGitを使用する場合は以下コマンドで初期設定しておきます。

```
$ git config --global user.name "ユーザー名"
$ git config --global user.email "メールアドレス"
```

次にGit管理したいディレクトリをGitの配下に置きます。

```
$ cd "C:/pleiades-2019-12-java-win-64bit-jre_20200213/pleiades/workspace/Sample"
（Gitで管理したいコードが配置されているディレクトリまで移動する。）

$ git init
（ディレクトリ内に".git"というディレクトリ（隠しファイル）が作成される。）

$ git remote add origin リモートリポジトリのURL
（プッシュ先のリモートリポジトリを指定する。）
```

ここで作成された`.git`ディレクトリに関してはこちらの記事に説明があります。
[.gitディレクトリの中身を見てみる](https://qiita.com/tatane616/items/dbad66179754be57d2e2)

ブランチを切ったときも`.git`内部でその情報を管理してくれるらしく、ブランチ切ったらEclipseに変な影響が出ないのか？みたいな心配はしなくてもよさそうです。

ちなみにGit Bashを使用すると、その名の通りWindows環境でBashが使えるようになるらしい。コマンドプロンプトと違い`$`マークがコマンドの先頭に表示されますね・・・！

## 2. Eclipseの設定
[`ウィンドウ`] - [`パースペクティブ`] - [`パースペクティブを開く`] - [`その他`]を選択します。
![パースペクティブ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1643541/396fa171-a945-9c8e-e848-452a1801a62f.png)

「Git」を選択して「開く」を押下します。

<img width="300" alt="パースペクティブ開く.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1643541/d64dad7e-fec9-c390-0396-1f1ff8502ad4.png">

「Gitリポジトリー」タブで「このビューへ既存のローカルGitリポジトリを追加」を選択します。この項目は初回起動時は①、2回目以降は②の場所に表示されます。また「Gitリポジトリー」タブは誤って閉じてしまっても、[`ウィンドウ`] - [`ビューの表示`] - [`Gitリポジトリー`]からいつでも開くことができます。
![既存のローカルgit.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1643541/ec44bc18-d407-65b1-b731-1e7f989764f6.png)

`.git`の作成されたディレクトリ（Git管理したいディレクトリ）を選択し「追加」を押下します。
![gitリポジトリの追加1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1643541/bcb896ae-4fa0-f473-8ef0-4796e9223bf9.png)

追加されたローカルリポジトリが表示されます。
![ローカルリポジトリ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1643541/8c373bbb-224a-66f7-31f4-a9d91f381e69.png)

## 3. issueを作成する
こちらの素晴らしい記事を参考にissueを作成してみましょう。
[GitHubのissueを活用した、個人アプリの開発手順を書いてみた](https://qiita.com/tkmd35/items/9612c03dc60b1c516969)

## 4. ブランチを切って作業する
一例として今回はこちらの`data.sql`ファイルを、フィーチャーブランチで編集作業します。
<img width="300" alt="dataドットsql.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1643541/69e5795c-d11b-63a7-2389-c91e955b5e6e.png">

Windowsのスタート画面からGit Bashを起動してもよいですが、プロジェクト名を右クリックから起動するとEclipse内でターミナルを開けます。
![gitbash開く1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1643541/8d5a09b3-cca0-e777-2f22-d717a9774a96.png)

プロジェクトの配置されているディレクトリがすでに表示されていますね。また現在のブランチは`main`であることも確認できます。
![gitbash開く2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1643541/e7e7dbaf-b4f5-fd8f-a70a-1806237ba619.png)

`test`ブランチを作成します。今いるブランチが`main`から`test`に変更されました。
![testブランチ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1643541/7ab7e790-6fe9-1898-30b5-fcefc1bb3a2b.png)

パッケージ・エクスプローラーで`test`ブランチにいることを確認し、
<img width="300" alt="testブランチ2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1643541/a651b4d5-08f3-f31c-c22c-dd9bd6ec1714.png">

`data.sql`ファイルを編集後、上書き保存します。編集したファイルと、その親ディレクトリの文字色が変化します。
<img width="300" alt="testブランチ3.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1643541/18b0c1db-2c7e-d9cb-b55c-a54b5bc292d1.png">

## 5. コミット&プッシュ
`test`ブランチでの編集作業が完了したのでコミット&プッシュしていきましょう。

```
$ git status
$ git add .
$ git commit -m "（コミット内容を記述）"
$ git push origin test
```

この時点では`main`ブランチにマージされていないので、`main`ブランチは編集前、`test`ブランチは編集後の内容になっています。ブランチを切り替えて、編集したファイルの中身を確認してみてください。

ブランチの切り替えはGit Bashのターミナルから`git checkout`でもできますが、パッケージ・エクスプローラー上にうまく切り替えが反映されないことが多そう（F5キー押せば反映されますが・・・）なので、ここはGUIによる切り替えもアリかもしれません。プロジェクト名の右クリックから切り替え可能です。
![ブランチ切り替え.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1643541/fcb9a9dc-4dd2-9549-0af8-77082381d4b3.png)

## 6. プルリクエスト&マージ&クローズ
こちらの記事（再掲）を参考にプルリクエスト作成～issueのクローズまで実施してみましょう。
[GitHubのissueを活用した、個人アプリの開発手順を書いてみた](https://qiita.com/tkmd35/items/9612c03dc60b1c516969)

## 7. リモートリポジトリの内容をローカルリポジトリに反映
先ほどマージしたのはGitHub上（リモートリポジトリ）なので、その内容を手元のローカルリポジトリにも反映しておきます。

```
$ git checkout main
$ git pull origin main
```

余談ですが、まだ多くの記事では`main`が`master`と表記されています。2020年10月以降、デフォルトブランチの名前が`master`から`main`に変更されています。Gitコマンドを打つときも`master`だと実行できませんので注意しましょう。

## 8. 不要なブランチを削除する
最後に不要になった（ローカルの）`test`ブランチを削除しましょう。

```
$ git branch
（現在のブランチを確認する。mainとtestがあるはず。）
$ git branch -d test
（testブランチを削除する。）
$ git branch
（再度ブランチを確認します。testが削除されている。）
```

ローカルブランチから`test`が削除されました。が、リモートブランチでは残ったままなので、そちらも削除しておきましょう。

```
$ git branch -a
（リモートブランチを確認する。mainとtestがあるはず。）
$ git push --delete origin test
（testブランチを削除する。）
$ git branch -a
（再度リモートブランチを確認します。testが削除されている。）
```

以上です。お疲れ様でした！

# まとめ
Eclipseで管理しているコードをGitで管理し、疑似チーム開発する手順を見てきました。個人開発してるけど、将来的なことを考えてチーム開発の練習しておきたいな、という人に役立てば幸いです！

## 本文中の参考資料
[.gitディレクトリの中身を見てみる](https://qiita.com/tatane616/items/dbad66179754be57d2e2)
[GitHubのissueを活用した、個人アプリの開発手順を書いてみた](https://qiita.com/tkmd35/items/9612c03dc60b1c516969)