2018-03-17 18:26:18 +05:30
---
2021-01-29 00:20:46 +05:30
stage: none
group: unassigned
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#designated-technical-writers
2018-03-17 18:26:18 +05:30
comments: false
---
2017-08-17 22:00:37 +05:30
# Git Stash
2019-12-21 20:55:43 +05:30
We use `git stash` to store our changes when they are not ready to be committed
2017-08-17 22:00:37 +05:30
and we need to change to a different branch.
2019-03-02 22:35:43 +05:30
- Stash:
2018-11-20 20:47:30 +05:30
2020-03-13 15:44:24 +05:30
```shell
2019-10-12 21:52:04 +05:30
git stash save
# or
git stash
# or with a message
git stash save "this is a message to display on the list"
```
2017-08-17 22:00:37 +05:30
2019-03-02 22:35:43 +05:30
- Apply stash to keep working on it:
2018-11-20 20:47:30 +05:30
2020-03-13 15:44:24 +05:30
```shell
2019-10-12 21:52:04 +05:30
git stash apply
# or apply a specific one from out stack
git stash apply stash@{3}
```
2017-08-17 22:00:37 +05:30
2019-10-12 21:52:04 +05:30
- Every time we save a stash it gets stacked so by using `list` we can see all our
2019-07-07 11:18:12 +05:30
stashes.
2017-08-17 22:00:37 +05:30
2020-03-13 15:44:24 +05:30
```shell
2019-10-12 21:52:04 +05:30
git stash list
# or for more information (log methods)
git stash list --stat
```
2017-08-17 22:00:37 +05:30
2019-03-02 22:35:43 +05:30
- To clean our stack we need to manually remove them:
2017-08-17 22:00:37 +05:30
2020-03-13 15:44:24 +05:30
```shell
2019-10-12 21:52:04 +05:30
# drop top stash
git stash drop
# or
git stash drop < name >
# to clear all history we can use
git stash clear
```
2017-08-17 22:00:37 +05:30
2019-03-02 22:35:43 +05:30
- Apply and drop on one command:
2017-08-17 22:00:37 +05:30
2020-03-13 15:44:24 +05:30
```shell
2019-10-12 21:52:04 +05:30
git stash pop
```
2017-08-17 22:00:37 +05:30
2019-03-02 22:35:43 +05:30
- If we meet conflicts we need to either reset or commit our changes.
- Conflicts through `pop` will not drop a stash afterwards.
2017-08-17 22:00:37 +05:30
2019-10-12 21:52:04 +05:30
## Git Stash sample workflow
2017-08-17 22:00:37 +05:30
1. Modify a file
2019-02-15 15:39:39 +05:30
1. Stage file
1. Stash it
1. View our stash list
1. Confirm no pending changes through status
1. Apply with pop
1. View list to confirm changes
2017-08-17 22:00:37 +05:30
2020-03-13 15:44:24 +05:30
```shell
2017-08-17 22:00:37 +05:30
# Modify edit_this_file.rb file
git add .
git stash save "Saving changes from edit this file"
git stash list
git status
git stash pop
git stash list
git status
```