背景・対象
- 弊現場ではEclipse上でGitの操作を行う運用となっており、そもそもcommitとpushくらいしか分からないという人も少なくない。
- その他の細かな操作のマニュアルが欲しいということで少し調べてみたが、Eclipseでの利用を前提としたGit関連の詳細な記事が意外と少ない。
- ほぼ弊現場向けではあるが、同じく悩んでいる
レガシィ環境下のエンジニアは少なくないだろうと思い、せっかくなので記事として残すことにした。 - commitとpushくらいしか使ってない、ブランチの概念はなんとなく知ってる程度の人向け。
- 環境構築、リポジトリの初期設定などは済んでいる前提。
- Pleiadesのバージョン4.5.2で説明する。
- シリーズ記事になるかもしれないしならないかもしれない。
スタッシュ(stash)とは?
スタッシュそのものの説明に関してはこちらの記事が大変わかりやすい。
『変更を一時的に退避!キメろgit stash』
要するに変更をコミットせずに退避する。
コミットしていないファイルが存在しているとブランチの切り替えができない。作業中のブランチとは別のブランチの作業が入ってしまった際などに使える。割り込みタスクはよくあること。
スタッシュってどこにある?
プロジェクトを右クリック -> チーム -> Stashes で出てくる。
つかいかた
- プロジェクトに変更がある状態で、**「変更をスタッシュ」**を選択する。
- スタッシュの名前を入力する。**「未追跡ファイルを含む」**にチェックを入れない場合、新規追加されたファイルはスタッシュに含まれないので注意。
- プロジェクトの変更状態マークが消えるので、別のブランチに切り替えて割り込みタスクを片付ける。
- スタッシュを行ったブランチに戻り、先ほど作成したスタッシュを選択する。
- 退避された変更ファイルの一覧が出るので、確認して右上の適用ボタンを押す。
- 適用しただけではスタッシュの削除は行われない。作業を続行しコミットが済んだらスタッシュを削除しよう。
注意事項
- プロジェクト全体でスタッシュを作成するため、ファイル単位でのスタッシュはできない。ただしEclipseでは「未追跡ファイルを含む」のチェック有無で変更ファイルと追加ファイルでスタッシュを分けることは可能。
- スタッシュは作成ブランチに紐づいているため、異なるブランチで作成したスタッシュを適用することはできない。そういうことをしたいのならチェリー・ピック(cherry-pick)でも使ったほうがよい。
- スタッシュ作成時とブランチの状態が変わっていると適用に失敗する可能性がある。例えばスタッシュしてからブランチのリベースを行った場合など。Eclipseの場合、スタッシュの適用に失敗すると中途半端に適用された状態になってしまい、マージツール無しの手作業での修復が必要となる。まだしもマージツールが使える苦肉の手段として、作業途中でもコミットしてしまってからリベースしてコンフリクトを解消し、リベースが済んだらリセットでコミットを取り消すという手も。
- 以上の内容は弊現場での環境下で確認されている事象であり、Eclipseならば必ずこうなるという話ではないのであしからず。また表現に関して厳密でない点へのマサカリはお手柔らかに。
- スタッシュは、退避してそのまま戻す使い方さえしていれば普通は特に問題が起こることがない。それ以外の使い方はしないほうが良い。
その他参考になりそうな記事
『EGit逆引きリファレンス(ブランチ操作関連)』
Pleiadesではないがスクショ付きでさらっと解説してあり見やすい。