# 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 -- ` 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 ` 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.