Files
My-Notes/git/add.md

2.1 KiB

Git Add Methods

Git Add Lines

git add -e

Select lines of changes interactively. This allows you to stage only specific lines of changes in a file.
Pros: More control over what gets staged. Cons: More manual work, you have to edit the patch file yourself, which can be error-prone and time-consuming.

Guidelines:

  • The editor shows a unified diff patch of working tree changes.
  • + lines: additions in the working tree (will be staged if kept).
  • - lines: deletions in the working tree (will be staged if kept).
  • Context lines (no prefix): unchanged lines needed for patch context.
  • To stage a change: keep the + or - line in the patch.
  • To NOT stage a change: delete the + or - line from the patch.
  • To keep a line unchanged: leave context lines as-is.
  • Never change + or - to spaces or vice versa — this breaks the patch format and causes "patch does not apply" errors.
  • To remove an added line (+) from being staged, delete the entire line.
    • If you break the patch, run git checkout -- <file> to undo, then run git add -e again.

Git Add Hunks

git add -p

Select hunks of changes interactively. This allows you to stage only parts of the changes in a file.
Pros: Easier to use than the -e method for staging specific parts of changes.
Cons: Sometimes split won't work, which will force you to use the -e method.

Guidelines

  • Run git add -p <file> or git add -p to go through patch hunks interactively.
  • For each hunk, choose:
    • y to stage this hunk
    • n to leave it unstaged
    • s to split the hunk into smaller parts
    • e to edit the hunk manually
    • q to quit and leave remaining hunks unstaged
    • a to stage this hunk and all remaining hunks
    • d to leave this hunk and all remaining hunks unstaged
  • If you choose s, Git will attempt to split the hunk into smaller hunks so you can stage a smaller section.
  • If you choose e, Git opens the patch in a temporary editor; delete + or - lines you do NOT want staged, then save and close.
  • When finished, run git status to verify which hunks were staged.