390

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,?]

3
  • 92
    If you try the ? option, you will find out Commented May 15, 2012 at 17:01
  • 10
    Maybe you just have to scroll up a bit?
    – Cosimo
    Commented Mar 12, 2013 at 17:16
  • 1
    The printout in the accepted answer includes options not listed when entering '?'
    – Mark
    Commented Oct 3, 2018 at 13:20

2 Answers 2

453

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
3
  • 9
    @VicGoldfeld d will proceed to the next file whilst q would abort the process entirely?
    – Steve
    Commented Jun 18, 2013 at 16:18
  • 5
    q does not reset any previously staged changes. Whatever you have already staged remains staged. Commented Oct 20, 2014 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. Commented Jan 16, 2019 at 10:44
51

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,?]? 
1
  • 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
    Commented Apr 2, 2022 at 5:59

Not the answer you're looking for? Browse other questions tagged or ask your own question.