Eclipseのチーム機能とGit

こんにちは。東と申します。
Javaとノーコードツールを使っています2年目のエンジニアです。

とある案件でEclipseを使用し、複数人でWEBページを作成したのですが、
その時に使ったのが **チーム** という機能でした。

ただ、この機能はGitというバージョン管理プラットフォームを使用しているのですが
よくわからない状態でした...
特にどのメニュー項目が、どのGitの機能かパッと一致しないのが個人的にモヤモヤした部分でした。
(コマンド上だと英字だからかもしれません。)

ですのでこの記事では自分用の備忘録も兼ねて、チームの機能を
おおよそ該当するGitの機能としてまとめたいと思います。（Eclipseオリジナルの機能、個人的に使用したことがない機能はここではサラッと流させていただきます。）

# チーム機能一覧
プロジェクト上で右クリック→チームへ
![screenshot edited.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3780649/66510384-1e31-323d-1e25-5cb48ce80ab3.png)

## 1,コミット(C)
Gitでは言わずと知れたコミット、ローカルブランチへの変更を記録する機能ですね。コマンドでは-mのオプションをつけることができますが、Eclipse上ではコメントを記載する欄が予め設けられていますね。
```
git commit -m "コメントが載せられる"
```

## 2,スタッシュ(S)
ローカルの修正分をとりあえずどこかに退避させたい時に使用する機能です。
コマンドでは以下でできますね。
```
変更をブランチへ退避
git stash

退避した変更を適応する
git stash apply stash@{0} --index
```
参照させていただいたEclipseの具体的な使用方法
https://qiita.com/Candle5000/items/a13e32511a2444ef1649

## 3,originへプッシュ(P)
ローカルブランチの変更内容をリモートブランチへ反映させるための機能です。
ただEclipseでは「Gitステージング」ウィンドウからHEADのプッシュというボタンでコミットとプッシュを同時に行うことができるのですね。
あまり意識して押したことはない気がします。
```
git push origin ブランチ名
```
## 4,originからフェッチ(F)
リモート追跡のブランチをリモートのブランチで最新化する機能です。
フェッチしただけではローカルのブランチは何も変わらないのですが、
最初はその意味が難しかったです。
```
git fetch 
```
## 5,ブランチのプッシュ
originへプッシュ(P)とは違い、リモート先（Gitの接続先）やプッシュするブランチを選択できる機能です。
新規作ったブランチへ変更内容を引っ越ししたい、環境が変わったので修正途中の変更を新環境へもっていきたいなどの場合には役に立ちそうですね。
別ブランチへのプッシュは以下のコマンドで簡単に実現できそうです。
```
git push origin push元ローカルブランチ名:push先リモートブランチ名
```
## 6,プル(U)、プル
リモート追跡のブランチだけではなくローカルブランチをも、リモートのブランチで最新化する機能です。
後に紹介します、マージ機能とフェッチ機能が合わさったものになります。
ブランチの状態を最新化する際によく使いますね。
コマンドだと以下で出来ます。
```
git pull
```

## 7,リモート(E)
Eclipse のリモート追跡ブランチへの操作がまとめられたメニュー項目のようです。
ここでは詳細は省略させていただきます。

## 8,切り替え(W)
この項目で編集をするブランチを切り替えることが出来ます。
ローカルのブランチの一覧が見やすくなっていますね。
自動的にローカルブランチの作成、チェックアウトをしてくれるのでgitコマンド的に”-b”オプションが付いている動作に該当しそうです。
```
ローカルのブランチの一覧を見る
git branch 

ローカルブランチを切り替える
git checkout ブランチ名 

新規ブランチの作成、チェックアウト
git checkout -b ローカルブランチ名 origin/リモートブランチ名

```
## 9,拡張(V)
拡張と名前がついていますが、基本的にはブランチに対しての
動作がまとめられています。
ブランチの削除や、名前の変更、タグの作成など様々な機能が集約されています。

## 10,ワークスペースの同期化()
調べてみましたが、よくわかりませんでした...
ご存じの方いらっしゃいましたらコメントに是非...!

## 11,マージ・ツール(M)
普段は使用することはありませんが、競合などが発生した際に使用できるツールです。
変更前と変更後で競合している画面を横並びにして比較できます。
Gitのコマンドでは差分を取るくらいしかできないですね。
```
git diff
```

## 12,マージ(M)
gitではお馴染みのマージ機能です。
リベースと合わせてブランチを統合するような機能です。
developの最新状態を修正中のブランチに取り込みたい時などに使ったりしますね。
```
git merge マージ先ブランチ名
```
## 13,リベース(R)
gitでマージと並んでブランチを統合する機能です。
何でもコミット履歴が順番に統合されるので、修正の時系列が分かりやすいのだとか。
マージがほとんどなので使いこなせるようになりたいですね。
```
git rebase マージ先ブランチ名
```
## 14,リセット(R)
修正内容をcommit,addしてしまったが取り消したい
などの際によく使用します。
commitだけなのか、addもなのか、はたまたどちらもかでオプションが変わります。
Eclipseではチェックボックスで切り替えできます。
```
コミットの取り消し
git reset --soft コミットのハッシュ値など

ファイルのaddの取り消し
git reset --mixed コミットのハッシュ値など

一つ前のコミットまで遡る
git reset --hard コミットのハッシュ値など

```
## 15,パッチの作成(T)
ファイルの変更差分がある場合のみ使用できる機能です。
gitで検出された差分をパッチファイル化でき、他の作業者もしくは
自身の別環境にその差分だけを適応したい時などに使えます。
```
git diff > ファイル名.patch
```
## 16,パッチの適応(Y)
15番で作成したパッチファイルの変更内容を
作業者の環境に取り込む機能です。
コマンドでは以下の通り
```
git apply ファイル名.patch
```

## 17,無視(I)
git上で比較差分をトラッキングしないようにする機能がありますが、
それをGUI上で行うことができるという機能です。
コマンドはなく通常では.gitignoreというファイルをリポジトリ上に配置するようにします。
## 18,ヒストリーに表示(O)
コミットの履歴を一覧に表示できる機能です。
さらにEclipseではそのウィンドウからコミットIDを指定して
チェックアウトやマージなどを行うことができます。
コマンドでは以下の通りです。
```
git log --pretty=format:"%h %s" --graph
```
## 19,リポジトリー・ビューで表示(V)
gitのリポジトリ情報を見ることができます。
ローカルやリモートのブランチ、HEADの状態、などを確認することができます。
GUIは便利ですね。

## 20,プロジェクトのアップグレード
普段は非活性状態で使用することがない謎の機能でした...
調べてもピンとこなかったためここでは割愛させていただきます。

## 21,切断(D)
gitのリモートリポジトリとの接続を切断する機能です。

# まとめ
調べるにあたって普段から使っている物は多数ヒットするのですが、
聞いたことない機能、Eclipseのオリジナルの機能は中々出ないことが多かったです。
どなたかご存じの方いらっしゃいましたら、コメント等で教えていただけると幸いです。
いつか分からなかった機能も使ってみて、どこかで再まとめみたいなのが出来たらと思っています。
以上東でした。