When I make changes to a file in Git, how can I commit only some of the changes?
For example, how could I commit only 15 lines out of 30 lines that have been changed in a file?
2022-02-10
When I make changes to a file in Git, how can I commit only some of the changes?
For example, how could I commit only 15 lines out of 30 lines that have been changed in a file?
You can use:
git add --patch <filename>
or for short:
git add -p <filename>
Git will break down your file into what it thinks are sensible "hunks" (portions of the file). It will then prompt you with this question:
Stage this hunk [y,n,q,a,d,/,j,J,g,s,e,?]?
Here is a description of each option:
+/- by # (thanks veksen)If the file is not in the repository yet, you can first do git add -N <filename>. Afterwards you can go on with git add -p <filename>.
Afterwards, you can use:
git diff --staged to check that you staged the correct changesgit reset -p to unstage mistakenly added hunksgit commit -v to view your commit while you edit the commit message.Note this is far different than the git format-patch command, whose purpose is to parse commit data into a .patch files.
Reference for future: Git Tools - Interactive Staging