Git: commit partial changes
git
Solution
You are doing exactly what I've done in the past, and I even recreated your entire experiment on a UNIX machine and it worked just as expected.
I suspect your editor is changing the line endings in the diff hunk when it saves.
Problem
There are multiple questions on Stack Overflow addressing the problem of staging and committing only parts from files. However, I can't make it work. - How can I commit only part of a file in git Let's say we want to implement a dummy math class in php (the language doesn't matter) with some basic methods like: `add`, `subtract`, `multiply` and `divide.` Let's start with the class definition: ``` <?php class Math { } ?> ``` Now: ``` $ git add math.php $ git commit -m "Create Math class." ``` In the next step we implement both `add` and `subtract` four methods: ``` <?php class Math { public function add($a, $b) { return $a + $b; } public function subtract($a, $b) { return $a - $b; } } ?> ``` But now we want to commit the implementation of the `add` and the `subtract` methods in separate commits. Is this possible? What I tried `$ git add -p` The following appears: I would love to split the hunk into smaller hunks, so I press `s`, and the following appears: It seems that git didn't split it into smaller hunks. Let's try now to manually edit the current hunk. So I press: `e`. My default text editor (sublime text) opens up, and here I can edit the hunk: I try to simply delete line 8,9,10,11 - because I want to stage only the `add` function. I save, close the editor, but git says: `Your edited hunk does not apply. Edit again (saying "no" discards!) [y/n]?` I'm really new to `git add -p` and interactive staging, so maybe it's something I do wrong, or simply it's not possible what I want, and really hope some more experienced git users have some instructions maybe also a solution for me. Thank you!