---
name: "Git::Raw::Stash"
section: "3pm"
platform: "linux"
package: "libgit-raw-perl"
version: "0.90+ds-3+b1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Git::Raw::Stash"
---

# Git::Raw::Stash(3pm)

Git stash class

## NAME

Git::Raw::Stash - Git stash class

## VERSION

version 0.90

## DESCRIPTION

Helper class to manage stashes.

**WARNING**: The API of this module is unstable and may change without warning (any change will be appropriately documented in the changelog).

## METHODS

### apply( $repo, $index, \[\\%stash\_apply\_opts\] )

Apply a single stashed state from the stash list. If local changes in the working directory conflict with changes in the stash this function will throw a `"Git::Raw::Error"` exception with a `"Git::Raw::Error::EMERGECONFLICT"` error code. If you are restoring untracked files or ignored files and there is a conflict when applying the modified files, then those files will remain in the working directory. Valid fields for `%stash_apply_opts` include:

- •

  "checkout\_opts"

  See `"Git::Raw::Repository->checkout()"`.

- •

  "flags"

  - •

    "reinstate\_index"

    Try to reinstate not only the working tree's changes, but also the index's changes.

- •

  "callbacks"

  - •

    "apply\_progress"

    Progress notification function. The callback receives a single `$progress` value which may be any constant provided by `"Git::Raw::Stash::Progress"`.

### pop( $repo, $index, \[\\%stash\_apply\_opts\] )

Apply a single stashed state from the stash list and remove it from the list if successful.

### save( $repo, $stasher, $msg \[, \\@opts\] )

Save the local modifications to a new stash. Non-default options may be specified by providing the optional `@opts` argument. If files were stashed, this function will return a Git::Raw::Commit object, otherwise `"undef"`.

Valid fields for the `@opts` array are:

- •

  "keep\_index"

  All changes already added to the index are left intact in the working directory. The default is to also stash changes in the index.

- •

  "include\_untracked"

  All untracked files are also stashed and then cleaned up from the working directory. The default is to leave untracked files in the working directory.

- •

  "include\_ignored"

  All ignored files are also stashed and then cleaned up up from the working directory. The default is to leave ignored files in the working directory.

### foreach( $repo, $callback )

Run `$callback` for every stash in the repo. The callback receives three arguments: the stash `$index`, the stash `$message` and the stash `$commit`, a Git::Raw::Commit object. A non-zero return value will stop the loop.

### drop( $repo, $index )

Remove a single stash from the stash list.

## AUTHOR

Alessandro Ghedini \<alexbio@cpan.org\>

Jacques Germishuys \<jacquesg@cpan.org\>

## LICENSE AND COPYRIGHT

Copyright 2012 Alessandro Ghedini.

This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.

See http://dev.perl.org/licenses/ for more information.
