(Ediff is a 2-way / 3-way interactive diffing interface, built into Emacs, with plenty of features for surgical diffing of files, buffers, directories and whatnot.)
This is news to me.
> select the section you want to stage and press 's'.
It stages line-wise for me. How do I get it to stage less than an entire line?
I could swear I remember this working in the past, but I can find no hint of it in a few quick searches, so I'm likely mistaken.
I'm sorry for the misinformation.Thanks for saying something.
cd $(mktemp -d)
git init
echo bar > file.txt
git add file.txt
git commit -m "init"
echo foo_bar_baz > file.txt
# select only "foo_" in magit-status and press "s"
git diff --cached
will show diff --git a/file.txt b/file.txt
index 5716ca5..2fd000c 100644
--- a/file.txt
+++ b/file.txt
@@ -1 +1,2 @@
bar
+foo_bar_baz
rather than the desired diff --git a/file.txt b/file.txt
index 5716ca5..2fd000c 100644
--- a/file.txt
+++ b/file.txt
@@ -1 +1,2 @@
-bar
+foo_bar
I can't really imagine this feature working that well with just selection. Editing of the diff seems required.I just updated magit, too. It seems to have been published 3 days ago.
I could swear I remember this working in the past, but I can find no hint of it in a few quick searches, so I'm likely mistaken.
I'm sorry for the misinformation. Thanks for saying something.
Actually, I think git's got Magit beat on that. Magit might make it easier to stage specific lines, but git can stage specific parts of lines or even changes that are completely different than what's on the worktree, through the editing of diffs with `git add -p`'s `e` option.