【Xcode/Git】stashとは?変更を避けてコミットする方法!

この記事からわかること
- Gitのstashを実行する方法
- stashとは?
- Xcodeでの操作方法
index
[open]
\ アプリをリリースしました /
Gitの便利な機能の1つ「stash(スタッシュ)」についてどのようなものなのか、そしてXcodeではどのように操作するのかをまとめていきたいと思います。
Git stashとは?
Gitのstashとは作業中の変更を一時的に避けて保存しておくことができる機能です。例えばコミットする前にブランチを移動したい場合など何かしらの変更がある状態から、何も変更がない状態に移りたい時に活躍します。
スタッシュが保存するのは現時点での前のコミットからの変更内容です。スタッシュする際はスタッシュの説明となる名前をつけて後から識別できるようにします。
また連続でスタッシュすることも可能となっており、指定のコマンドを叩くことでスタッシュを戻し、作業ツリーに変更を戻すことができます。
stashするコマンド
スタッシュするにはgit stash
コマンドのsave
オプションを使用し、引数としてスタッシュの名前を渡します。
$ git stash save "説明"
スタッシュ履歴を確認する
現在のスタッシュ履歴を確認するにはlist
を使用します。
$ git stash list
stash@{0}: On main: 説明
stash@{1}: On main: AAの改修
stash@{2}: On main: BBの改修
stash@{3}: On main: CCの改修
格納されているスタッシュにはstash@{n}
形式の識別子が振られます。この識別子をshow
の後に渡すことで任意のスタッシュの変更履歴を確認することができます。
$ git stash show stash@{0}
ArtistList.txt | 1 +
1 file changed, 1 insertion(+)
stash@{n}
を指定しないと最新のスタッシュを表示します。
スタッシュを戻す
スタッシュを戻すにはapply
を使用します。これで作業ツリーの内容がスタッシュの内容に戻ります。
$ git stash apply
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: ArtistList.txt
;
no changes added to commit (use "git add" and/or "git commit -a")
apply
を使用した場合はスタッシュは消去されずに残ります。
$ git stash list
stash@{0}: On main: 説明
スタッシュ履歴ごと無くしたい場合はpop
を使用します。
スタッシュを指定してapplyする
スタッシュが複数ある場合に指定してapplyするには指定したい番号を渡します。この番号はlist
した際の{n}
部分になります。
git stash apply [番号]
git stash apply 1
Xcodeでスタッシュを操作する
おすすめ記事:【Xcode】Gitの連携方法と使い方!バージョン管理方法
iOSアプリ開発で使用する統合開発環境XcodeからでもGitの操作はできるようになっており、スタッシュもコマンドを使用することなく実行可能です。操作するのはXcodeの上部メニュー>「Source Control」>「Stashed Changes」です。

ファイルに何かしらの変更がある状態で「Stashed Changes」をクリックし、以下画面に説明を書き込みます。

するとXcode左のナビゲータエリアの左から2つ目のアイコン(Source Control)からスタッシュの履歴を確認することができます。ファイルの差分もわかりやすくなっています。

スタッシュを戻したい場合はスタッシュも右クリックして「Apply Stashed Changes」をクリックし、「作業ツリーのファイルの変更を復元しますか?」に「Apply Stash」を押すことで実行できます。

スタッシュをApplyしても履歴は残りますので不要であればスタッシュも右クリックして「Delete」で消去してください。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。