git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] git-stash: add new 'pop' subcommand

From
Brandon Casey <casey@nrlssc.navy.mil>
Date
Feb 22, 2008, 22:52 UTC
Message-ID
<47BF5242.6090906@nrlssc.navy.mil>
In-Reply-To
<47BF1CD6.70500@nrlssc.navy.mil>

This combines the existing stash subcommands 'apply' and 'drop' to allow a single stash entry to be applied and then dropped, in other words 'popped', from the stash list.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
---
For completeness, here is stash pop.
-brandon
 Documentation/git-stash.txt |    8 +++++++-
 git-stash.sh                |   10 +++++++++-
 2 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/Documentation/git-stash.txt b/Documentation/git-stash.txt
index f50c24c..8dc35d4 100644
--- a/Documentation/git-stash.txt
+++ b/Documentation/git-stash.txt
@@ -8,7 +8,7 @@ git-stash - Stash the changes in a dirty working directory away
 SYNOPSIS
 --------
 [verse]
-'git-stash' (list | show [<stash>] | apply [<stash>] | clear | drop [<stash>])
+'git-stash' (list | show [<stash>] | apply [<stash>] | clear | drop [<stash>] | pop [<stash>])
 'git-stash' [save [<message>]]
 
 DESCRIPTION
@@ -90,6 +90,12 @@ drop [<stash>]::
 	Remove a single stashed state from the stash list. When no `<stash>`
 	is given, it removes the latest one. i.e. `stash@\{0}`
 
+pop [<stash>]::
+
+	Remove a single stashed state from the stash list and apply on top
+	of the current working tree state. When no `<stash>` is given,
+	`stash@\{0}` is assumed. See also `apply`.
+
 
 DISCUSSION
 ----------
diff --git a/git-stash.sh b/git-stash.sh
index caa0258..297d12d 100755
--- a/git-stash.sh
+++ b/git-stash.sh
@@ -1,7 +1,7 @@
 #!/bin/sh
 # Copyright (c) 2007, Nanako Shiraishi
 
-USAGE='[  | save | list | show | apply | clear | drop | create ]'
+USAGE='[  | save | list | show | apply | clear | drop | pop | create ]'
 
 SUBDIRECTORY_OK=Yes
 OPTIONS_SPEC=
@@ -253,6 +253,14 @@ drop)
 	shift
 	drop_stash "$@"
 	;;
+pop)
+	shift
+	if apply_stash "$@"
+	then
+		test -z "$unstash_index" || shift
+		drop_stash "$@"
+	fi
+	;;
 *)
 	if test $# -eq 0
 	then
-- 
1.5.4.2.267.g38ea.dirty
Previous: Brandon Casey
Message 50 of 50 in “What's cooking in git.git (topics)”
  1. Junio C HamanoFeb 3, 2008
  2. Johannes SchindelinFeb 3, 2008
  3. Junio C HamanoFeb 5, 2008
  4. Jakub NarebskiFeb 5, 2008
  5. Junio C HamanoFeb 6, 2008
  6. Junio C HamanoFeb 7, 2008
  7. Jeff KingFeb 7, 2008
  8. Lars HjemliFeb 7, 2008
  9. Jakub NarebskiFeb 7, 2008
  10. Junio C HamanoFeb 10, 2008
  11. Jakub NarebskiFeb 10, 2008
  12. Johannes SchindelinFeb 10, 2008
  13. Junio C HamanoFeb 10, 2008
  14. Junio C HamanoFeb 10, 2008
  15. Junio C HamanoFeb 12, 2008
  16. reflog-delete, was Re: What's cooking in git.git (topics)Johannes Schindelin, Feb 12, 2008
  17. Junio C HamanoFeb 17, 2008
  18. Jeff KingFeb 17, 2008
  19. Jakub NarebskiFeb 17, 2008
  20. Junio C HamanoFeb 17, 2008
  21. Jakub NarebskiFeb 17, 2008
  22. Junio C HamanoFeb 18, 2008
  23. Jakub NarebskiFeb 18, 2008
  24. Matthias KestenholzFeb 17, 2008
  25. Junio C HamanoFeb 17, 2008
  26. Jeff KingFeb 17, 2008
  27. [Announce] 'next' rewound and rebasedJunio C Hamano, Feb 17, 2008
  28. Junio C HamanoFeb 21, 2008
  29. Johannes SchindelinFeb 21, 2008
  30. Junio C HamanoFeb 21, 2008
  31. Brandon CaseyFeb 22, 2008
  32. 1/4 git-reflog: add option --rewrite to update reflog entries while expiringBrandon Casey, Feb 22, 2008
  33. reflog-delete: parse standard reflog optionsBrandon Casey, Feb 22, 2008
  34. Junio C HamanoFeb 22, 2008
  35. Brandon CaseyFeb 23, 2008
  36. Junio C HamanoFeb 23, 2008
  37. Junio C HamanoFeb 23, 2008
  38. Brandon CaseyFeb 23, 2008
  39. Junio C HamanoFeb 25, 2008
  40. Junio C HamanoFeb 28, 2008
  41. Junio C HamanoMar 1, 2008
  42. Shawn O. PearceMar 2, 2008
  43. Junio C HamanoMar 3, 2008
  44. Junio C HamanoMar 6, 2008
  45. Johannes SchindelinMar 6, 2008
  46. Junio C HamanoMar 8, 2008
  47. 2/4 refs.c: make close_ref() and commit_ref() non-staticBrandon Casey, Feb 22, 2008
  48. 3/4 git-reflog: add option --updateref to write the last reflog sha1 into the refBrandon Casey, Feb 22, 2008
  49. 4/4 git-stash: add new 'drop' subcommandBrandon Casey, Feb 22, 2008
  50. git-stash: add new 'pop' subcommandBrandon Casey, Feb 22, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.