記事の内容
概要
stashコマンドは、作業中の変更を一時的に保存するために使用します。
※一時的に退避させ、ブランチを切り替えたいときに便利
stash
作成方法
git stash
$ ls -l
drwxr-xr-x 13 tomoji tomoji 416 3 4 12:34 .git
-rw-r--r-- 1 tomoji tomoji 0 3 4 12:34 file1.txt
『ブランチ一覧』
$ git branch
* main
『新しいブランチ作成してチェックアウト』
$ git checkout -b future/new_function
『ブランチ一覧』
$ git branch
* future/new_function
main
『vim編集』
$ vim file1.txt
【vimでfile1.txtを編集して保存】
edited
:wq
『チェックアウト』
$ git checkout main
error: Your local changes to the following files would be overwritten by checkout:
file1.txt
Please commit your changes or stash them before you switch branches.
Aborting
『編集内容を一時退避』
$ git stash
『チェックアウト成功』
$ git checkout main
Switched to branch 'main'
退避リスト表示
stash list
作成方法
git stash list
$ ls -l
drwxr-xr-x 13 tomoji tomoji 416 3 4 12:34 .git
-rw-r--r-- 1 tomoji tomoji 0 3 4 12:34 file1.txt
『ブランチ一覧』
$ git branch
* future/new_function
main
『vim編集』
$ vim file1.txt
【vimでfile1.txtを編集して保存】
edited
:wq
『チェックアウト』
$ git checkout main
error: Your local changes to the following files would be overwritten by checkout:
file1.txt
Please commit your changes or stash them before you switch branches.
Aborting
『編集内容を一時退避』
$ git stash
『スタッシュリスト表示(edited file1は最終コミット履歴)』
$ git stash list
stash@{0}: WIP on future/new_function: c6efe22 edited file1
『再度vim編集』
$ vim file1.txt
【再度vimでfile1.txtを編集して保存】
edited
:wq
『編集内容を一時退避』
$ git stash
『スタッシュリスト表示』
$ git stash list
stash@{0}: WIP on future/new_function: c6efe22 edited file1
stash@{1}: WIP on future/new_function: c6efe22 edited file1
退避変更を適用(リスト追加)
stash apply
作成方法
git stash apply
$ ls -l
drwxr-xr-x 13 tomoji tomoji 416 3 4 12:34 .git
-rw-r--r-- 1 tomoji tomoji 0 3 4 12:34 file1.txt
『ブランチ一覧』
$ git branch
* future/new_function
main
『vim編集』
$ vim file1.txt
【vimでfile1.txtを編集して保存】
edited for stash apply
:wq
『チェックアウト』
$ git checkout main
error: Your local changes to the following files would be overwritten by checkout:
file1.txt
Please commit your changes or stash them before you switch branches.
Aborting
『編集内容を一時退避』
$ git stash
『チェックアウト成功』
$ git checkout main
Switched to branch 'main'
『mainでの確認後に元の編集していたブランチに戻る』
$ git checkout future/new_function
Switched to branch 'future/new_function'
『編集していた状況に戻す』
$ git stash apply
On branch future/new_function
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: file1.txt
no changes added to commit (use "git add" and/or "git commit -a")
『スタッシュのリストを残す』
$ git stash list
stash@{0}: WIP on future/new_function: c6efe22 edited file1
退避変更を適用(リスト削除)
stash pop
作成方法
git stash pop
$ ls -l
drwxr-xr-x 13 tomoji tomoji 416 3 4 12:34 .git
-rw-r--r-- 1 tomoji tomoji 0 3 4 12:34 file1.txt
『ブランチ一覧』
$ git branch
* future/new_function
main
『vim編集』
$ vim file1.txt
【vimでfile1.txtを編集して保存】
edited for stash pop
:wq
『チェックアウト』
$ git checkout main
error: Your local changes to the following files would be overwritten by checkout:
file1.txt
Please commit your changes or stash them before you switch branches.
Aborting
『編集内容を一時退避』
$ git stash
『チェックアウト成功』
$ git checkout main
Switched to branch 'main'
『mainでの確認後に元の編集していたブランチに戻る』
$ git checkout future/new_function
Switched to branch 'future/new_function'
『編集していた状況に戻す(スタッシュ履歴を削除する)』
$ git stash pop
On branch future/new_function
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: file1.txt
no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (9b7e75acb1a30c3c1f8f91a4b85b13d5b4b5877e)
『スタッシュリスト』
$ git stash list
スタッシュ履歴削除
最新スタッシュ
stash drop
作成方法
git stash drop
『スタッシュリスト表示』
$ git stash list
stash@{0}: WIP on future/new_function: 66fb8ba edited3
stash@{1}: WIP on future/new_function: 11b8c5a edited2
stash@{2}: WIP on future/new_function: 6c9157c edited1
『最新スタッシュを削除』
$ git stash drop
Dropped stash@{0} (66fb8ba7832ddc4f002ad5417265cd3b681e7502)
『スタッシュリスト表示』
$ git stash list
stash@{0}: WIP on future/new_function: 11b8c5a edited2
stash@{1}: WIP on future/new_function: 6c9157c edited1
特定スタッシュ
stash drop 指定番号
作成方法
git stash drop stash@{番号}
『スタッシュリスト表示』
$ git stash list
stash@{0}: WIP on future/new_function: 66fb8ba edited3
stash@{1}: WIP on future/new_function: 11b8c5a edited2
stash@{2}: WIP on future/new_function: 6c9157c edited1
『特定のスタッシュを削除』
$ git stash drop stash@{1}
Dropped stash@{1} (11b8c5af03d5b042d0b57229ef9d5d68c18af249)
『スタッシュリスト表示』
$ git stash list
stash@{0}: WIP on future/new_function: 66fb8ba edited3
stash@{1}: WIP on future/new_function: 6c9157c edited1
全てのスタッシュ
stash clear
作成方法
git stash clear
『スタッシュリスト表示』
$ git stash list
stash@{0}: WIP on future/new_function: 66fb8ba edited3
stash@{1}: WIP on future/new_function: 11b8c5a edited2
stash@{2}: WIP on future/new_function: 6c9157c edited1
『全てのスタッシュを削除』
$ git stash clear
『スタッシュリスト表示』
$ git stash list