375

When using -p mode of git add -p or git stash -p what does each of the letters stand for?

I'm guessing y is yes and n is no. What are the rest?

[y,n,q,a,d,/,K,j,J,g,e,?]

chrisjlee
  • 21,691
  • 27
  • 82
  • 112

2 Answers2

434

The -p mode means patch, the help for which is hard-ish to find, but if you check git add --help you'll find the following

   patch
       This lets you choose one path out of a status like selection. After choosing the path, it presents the diff between the index and the working tree file and asks you if you want to stage the change of each hunk. You can select one of the following options and type return:

           y - stage this hunk
           n - do not stage this hunk
           q - quit; do not stage this hunk nor any of the remaining ones
           a - stage this hunk and all later hunks in the file
           d - do not stage this hunk nor any of the later hunks in the file
           g - select a hunk to go to
           / - search for a hunk matching the given regex
           j - leave this hunk undecided, see next undecided hunk
           J - leave this hunk undecided, see next hunk
           k - leave this hunk undecided, see previous undecided hunk
           K - leave this hunk undecided, see previous hunk
           s - split the current hunk into smaller hunks
           e - manually edit the current hunk
           ? - print help
AD7six
  • 63,116
  • 12
  • 91
  • 123
  • 9
    @VicGoldfeld d will proceed to the next file whilst q would abort the process entirely? – Steve Jun 18 '13 at 16:18
  • 5
    `q` does _not_ reset any previously staged changes. Whatever you have already staged remains staged. – Alexander Bird Oct 20 '14 at 21:39
  • I use `-p` for stashing, didn't know you could use this for `add` too! Just to add to this answer, whilst there is mention of the `-p | --patch` flag, this cmd: `git stash --help` does NOT give you the same information about patch options as `git add --help` does. – Phil Gibbins Jan 16 '19 at 10:44
48

The meaning of these letters can be found by typing ? and hit the Enter key. For me these didn't come when run git add --help. I got the meaning of these options as below :-

Arup-iMac:$ git add -p
diff --git a/app/interactors/reporting_groups/list_colleagues.rb b/app/interactors/reporting_groups/list_colleagues.rb
index adc28af..f46f5e3 100644
--- a/app/interactors/reporting_groups/list_colleagues.rb
+++ b/app/interactors/reporting_groups/list_colleagues.rb
@@ -14,7 +14,4 @@ module ReportingGroups
         reporting_group.employees_from_team_sub_reporting_groups
       else
         reporting_group.users
-      end
-    end
-  end
-end
+      
Stage this hunk [y,n,q,a,d,/,e,?]? ? <-- Look here, what I typed to get these.
y - stage this hunk
n - do not stage this hunk
q - quit; do not stage this hunk nor any of the remaining ones
a - stage this hunk and all later hunks in the file
d - do not stage this hunk nor any of the later hunks in the file
g - select a hunk to go to
/ - search for a hunk matching the given regex
j - leave this hunk undecided, see next undecided hunk
J - leave this hunk undecided, see next hunk
k - leave this hunk undecided, see previous undecided hunk
K - leave this hunk undecided, see previous hunk
s - split the current hunk into smaller hunks
e - manually edit the current hunk
? - print help
@@ -14,7 +14,4 @@ module ReportingGroups
         reporting_group.employees_from_team_sub_reporting_groups
       else
         reporting_group.users
-      end
-    end
-  end
-end
+      
Stage this hunk [y,n,q,a,d,/,e,?]? 
Arup Rakshit
  • 116,827
  • 30
  • 260
  • 317
  • It's the same output as git add --help. It still add value as it is another path to menu description without exiting the patch-stage process. – mabreu0 Apr 02 '22 at 05:59