Files
My-Notes/git/add.md
2026-05-14 20:02:01 +03:00

39 lines
2.3 KiB
Markdown

# 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 an addition: keep the `+` line in the patch.
- To NOT stage an addition: **delete** the `+` line from the patch.
- To stage a deletion: keep the `-` line in the patch.
- To NOT stage a deletion: **convert the `-` to a space**.
- For modified content (shown with `-` lines followed by `+` lines):
- To NOT stage the modification: convert the `-` lines to spaces and remove the `+` lines.
- Note: modifying only half of the pair may cause confusing changes to the index.
- To keep a line unchanged: leave context lines as-is.
- If you want to decline the operation entirely, delete all lines of the patch.
- 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.