1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

git stashで何を保存するかのオプション

Posted at

概要

git stashのオプション指定によってどう挙動が変わるか確認、整理します。1

git version 2.26.2 で確認。

オプションなし

リポジトリにあるファイルの変更

保存される。

% git status
On branch master
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:   README

no changes added to commit (use "git add" and/or "git commit -a")
% git stash
Saved working directory and index state WIP on master: 2be296f add
% git status
On branch master
nothing to commit, working tree clean
% git stash pop
On branch master
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:   README

no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (c3341440d3d936bcde11b70521bfe50b6c8cf289)

ステージされた変更

保存される。popするとアンステージされた状態に戻る。
(git stash pop に --index オプションを付けるとステージされた状態に戻る)

% git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
	modified:   README

% git stash
Saved working directory and index state WIP on master: 2be296f add
% git status
On branch master
nothing to commit, working tree clean
% git stash pop
On branch master
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:   README

no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (6f7975d49efb05229d126100234347dacce702ff)
% git status
On branch master
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:   README

no changes added to commit (use "git add" and/or "git commit -a")

ステージされた新規ファイル

保存される。popするとステージされた状態に戻る。

% git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
	new file:   NEWS

% git stash
Saved working directory and index state WIP on master: 2be296f add
% git status
On branch master
nothing to commit, working tree clean
% git stash pop
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
	new file:   NEWS

Dropped refs/stash@{0} (06f0eade21e57da6d18f3b0b4e9672d8f37b324d)
% git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
	new file:   NEWS

追跡されてないファイル

保存されない。

% git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)
	NEWS

nothing added to commit but untracked files present (use "git add" to track)
% git stash
No local changes to save

無視指定されてるファイル

保存されない。

% git status --ignored
On branch master
Ignored files:
  (use "git add -f <file>..." to include in what will be committed)
	README~

nothing to commit, working tree clean
% git stash
No local changes to save

-u オプションを付けた場合

追跡されてないファイル

保存される。popすると追跡されてない状態に戻る。

% git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)
	NEWS

nothing added to commit but untracked files present (use "git add" to track)
% git stash -u
Saved working directory and index state WIP on master: 2be296f add
% git status
On branch master
nothing to commit, working tree clean
% git stash pop
Already up to date!
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)
	NEWS

nothing added to commit but untracked files present (use "git add" to track)
Dropped refs/stash@{0} (4e498a9757baa17fbed2e558f9d5a833c3be6ed7)

無視指定されてるファイル

保存されない。

% git status --ignored
On branch master
Ignored files:
  (use "git add -f <file>..." to include in what will be committed)
	README~

nothing to commit, working tree clean
% git stash -u
No local changes to save

空ディレクトリ

消える。gitは空ディレクトリを管理しないので。

% ls -a emptydir                                                              ./  ../
% git status
On branch master
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:   README

no changes added to commit (use "git add" and/or "git commit -a")
% git stash -u
Saved working directory and index state WIP on master: 2be296f add
% ls -a emptydir
ls: emptydir: No such file or directory
% git stash pop
On branch master
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:   README

no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (cfae721ccf166d2631c40b66e8984e80c0a5baef)
% ls -a emptydir
ls: emptydir: No such file or directory

-a オプションを付けた場合

追跡されてないファイル

-u オプションを付けた場合と同様に保存される。

無視指定されてるファイル

保存される。

% git status --ignored
On branch master
Ignored files:
  (use "git add -f <file>..." to include in what will be committed)
	README~

nothing to commit, working tree clean
% git stash -a
Saved working directory and index state WIP on master: 2be296f add
% git status --ignored
On branch master
nothing to commit, working tree clean
% git stash pop
Already up to date!
On branch master
nothing to commit, working tree clean
Dropped refs/stash@{0} (e287d64ca99f582a530a3cdcd021d12c39c07cb2)
% git status --ignored
On branch master
Ignored files:
  (use "git add -f <file>..." to include in what will be committed)
	README~

nothing to commit, working tree clean

空ディレクトリ

-u の場合と同様に消える。

-k (--keep-index) オプションを付けた場合

ステージされた変更、ステージされた新規ファイル

共に保存される。ステージング領域の状態は維持される。

% git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
	new file:   NEWS
	modified:   README

% git stash -k
Saved working directory and index state WIP on master: 2be296f add
% git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
	new file:   NEWS
	modified:   README
  1. git pullでerror: The following untracked …やYour local changes…が出たときの原因と対処 で git stash の -a オプションを知ったのがきっかけです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?