Webサービスやアプリ開発の現場では必須のバージョン管理システム「Git(ギット)」。Gitは、専用のソフトを使えばクリックで直感的に操作することもできますが、いざというときにコマンドが使えると便利です。
前回の 第10話 では、必要なコミットだけを取り込める「cherry-pick(チェリーピック)」を学びました。
・別のブランチから今いるブランチへ、必要なコミットだけをコピーしてくる
$ git cherry-pick [コミットID]
・複数のコミットを取り込みたい場合
$ git cherry-pick [コミットIDその1]..[コミットIDその2]
・コミットせずに作業ディレクトリだけに変更を留めたい場合
$ git cherry-pick -n [コミットID]
今回の第11話では、まだコミットしたくないファイルを一時退避できる「stash(スタッシュ)」の使い方を学びます。このマンガを通して、わかばちゃんと一緒にGitの知識を身につけていきましょう!
git stash で編集中のファイルを一時待避
基本的な git stash の使い方
・スタッシュを保存する
作業中のファイルを保存するには、まだコミットしていない状態で、次のコマンドを実行します。
$ git stash save
・保存したリストを見る
過去に保存したスタッシュのリストを見るには、次のコマンドを実行します。
$ git stash list
stash@{0}: WIP on branchA: 29a8f12 add fourth line
stash@{1}: WIP on branchB: 9s06dae add second line
stash@{0}: WIP on branchA: 29a8f12 add fourth line
stash@{1}: WIP on branchB: 9s06dae add second line
この例では、過去に保存したスタッシュ2つが表示されています。
・stash@{n}と表示されている箇所
→各スタッシュに個別で付けられている名前
→各スタッシュに個別で付けられている名前
・branchA、branchBと表示されている箇所
→スタッシュを行ったときのブランチの名前
・ハッシュ、コミットメッセージ
(29a8f12 add fourth line、9s06dae add second lineの箇所)
→スタッシュを行ったときのHEADのもの
・スタッシュを復活させる
上記により復活させたいスタッシュの名前がわかったので、復活させます。
$ git stash apply stash@{0}
・スタッシュを削除する
復活させたスタッシュが不要になった場合は、こちらのコマンドで削除。
$ git stash drop stash@{0}
・スタッシュの復活と削除を同時に行う
apply → drop と2回打ち込むのが面倒ですよね。なんと、これらを同時に行う便利なコマンドもあります!
$ git stash pop stash@{0}
スタッシュがたまりすぎると、何がなんだかわからなくなるので、こまめに消すようにね。
まとめ
編集中のファイルを一時退避できる stash について学びました。
・スタッシュを保存する
$ git stash save
・保存したリストを見る
$ git stash list
・スタッシュの復活と削除を同時に行う
$ git stash pop [スタッシュ名]
Gitにはまだまだたくさんのコマンドがあります。
次回は、gitで管理されているソースだけを文字列検索(grep)できるコマンド「git-grep」を学びましょう。
▼登場キャラクター紹介
▼わかばちゃんが登場する書籍
▼ これまでの「マンガでわかるGit」
第1話「リポジトリの作成」
第2話「ブランチの概念」
第3話「マージの仕組み」
第4話「コンフリクトの修正」
第5話「git revert」
第6話「git reset 3種類」
第7話「git reflog」
第8話「git switchとgit restore」
第9話「git diff」
第10話「git cherry-pick」
第11話「git stash」
第12話「git grep」
第13話「git blame」
第14話「git remote」
第15話「.gitconfig でコマンドを短縮」
第16話「.gitconfig と .git/config で複数のGitアカウントを使い分ける」
第17話「prune オプション」
第18話「git tag」
第19話「detached HEAD 状態って何?」
第2話「ブランチの概念」
第3話「マージの仕組み」
第4話「コンフリクトの修正」
第5話「git revert」
第6話「git reset 3種類」
第7話「git reflog」
第8話「git switchとgit restore」
第9話「git diff」
第10話「git cherry-pick」
第11話「git stash」
第12話「git grep」
第13話「git blame」
第14話「git remote」
第15話「.gitconfig でコマンドを短縮」
第16話「.gitconfig と .git/config で複数のGitアカウントを使い分ける」
第17話「prune オプション」
第18話「git tag」
第19話「detached HEAD 状態って何?」