本記事では、作業中に急遽急ぎの別件がきてしまい、別ブランチで作業をしないといけない時に作業内容を一時的に退避(移動)する方法について解説しています。
Gitの学習におすすめ書籍
改訂2版 わかばちゃんと学ぶ Git使い方入門
メリット
- 漫画形式で読みやすく理解しやすい
- GitHubを使った実践的な内容も分かりやすい
ポチップ
先輩くん
Amazon Kindle Unlimitedに登録すると、月額980円で読み放題だからオススメだよ!
初回30日間は無料だから、まだ登録したことのない人はぜひ試してみてね!
全プログラマー必見!
変数名/関数名にもう悩まない!
変数名/関数名にもう悩まない!
リーダブルコード
メリット
- 美しいコードが書けるが自然と書けるようになる
- 他の開発者が理解しやすいコードになる
著:Dustin Boswell, 著:Trevor Foucher, 解説:須藤 功平, 翻訳:角 征典
¥2,640 (2023/07/23 02:48時点 | Amazon調べ)
目次
git stash
作業内容を一時的に退避(移動)するには、git stashコマンドを使います。使い方は以下のとおりです。
# 一時的に退避
git stash
# 最新の作業を復元
git stash apply
# 特定の作業を復元
git stash apply stash@{n}
# 最新の作業を削除
git stash drop
# 特定の作業を削除
git stash drop stash@{n}
# 退避した情報をリスト形式で表示
git stash list
特定の作業を復元/削除するコマンドの「n」には、復元したい作業の場所を表す数値を指定します。git stash listコマンドで確認することが可能です。
実際に、ファイルを変更した後にgit stashコマンドを使って作業内容を一時的に退避してみましょう。
今回は、index.htmlファイルの内容を一時的に退避するよ。
index.htmlの2行目に新しくコードを追記しました。
<p>既存コード</p>
<p>新規追加コード</p>
このタイミングで別ブランチでの作業が入ったと仮定します。上記のコードを一時的に退避したいので、git stashコマンドを使います。
git stash
すると、先ほど編集していたindex.htmlの内容が編集前の状態に戻りました。
<p>既存コード</p>
git statusコマンドでファイルの状況を確認すると、
$ git status
On branch main
nothing to commit, working tree clean
ワークツリーはクリーンな状態なことが分かります。別ブランチでの作業が終了したら、一時的に退避していたファイルをgit stash 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: index.html
index.htmlの内容は編集していた状態に戻ります。
<p>既存コード</p>
<p>新規追加コード</p>
復元をすると、退避していた情報は消えると思われるかもしれませんが残り続けます。最後に削除しましょう。
$ git stash drop
Dropped refs/stash@{0}