git/stash-apply

Apply Stash

Reapply previously stashed changes without removing them from the stash list

git
stash
apply
restore
changes

Command

git stash apply

Explanation

`git stash apply` is used to reapply the changes you have previously stashed using `git stash`. This command restores the stashed modifications back into your working directory but does not remove them from the stash list, allowing you to reuse or apply them again later. You can apply the most recent stash by default, or specify a particular stash (e.g., `stash@{1}`) if you have multiple. If there are conflicts when applying, Git will mark them for manual resolution. Unlike `git stash pop`, `git stash apply` keeps the stash in your stash list even after applying it, which makes it safer when you’re not yet sure if the reapplication will work cleanly.

Common Use Cases

  • Restoring previously saved work after switching branches
  • Testing a stashed change in a different context before committing
  • Applying the same stash to multiple branches

Best Practices

  • Use `git stash list` to identify which stash to apply before running the command
  • Apply stashes in the same branch or context where they were created
  • Manually verify changes after applying to avoid accidental overwrites
  • Keep your stash list organized by dropping unused stashes after testing

Common Mistakes to Avoid

  • Confusing `git stash apply` with `git stash pop` (the latter removes the stash after applying)
  • Applying stash in the wrong branch or context, causing conflicts
  • Forgetting to resolve conflicts after applying stash
  • Assuming stash apply merges cleanly every time

Troubleshooting

Problem: Conflicts occurred when applying stash

Solution: Resolve the conflicts manually and then continue working. Use `git stash show -p stash@{n}` to inspect stashed changes.

Problem: Accidentally applied stash to the wrong branch

Solution: You can stash the new changes again and switch to the intended branch, then reapply the correct stash.

Problem: Applied stash but changes seem missing

Solution: Ensure you applied the correct stash entry (`stash@{n}`). If untracked files were involved, they might require using `git stash apply --include-untracked`.

Examples

Apply the most recent stash

git stash apply

Apply a specific stash from the stash list

git stash apply stash@{1}

View the changes contained in a specific stash before applying

git stash show -p stash@{0}