5/18/2025 at 3:07:37 PM
Once I discovered how git apply can take diff files (or patch files) as input, I stopped using git stash in favor of plain old files. Easier to list and browse the contents of prior edits, also you can grep the files as method of search. I’ve even found myself copying and editing the diffs before applying.by johnrob
5/18/2025 at 7:20:36 PM
That is a very neat trick, I agree.I personally approaches stashes as undoable "clean up", and I never have anything really important that I want to save there. If I do have something like that, I just commit with a "WIP <some-descriptive-string>" message and don't push it, then a "git reset --mixed HEAD^" when I want to get back to it.
However, just FYI: you can "grep" your stashes really easily if you want to. just "git stash list -p" gives you the diffs for all the stashes, by default in "less" where you can search them, but you can pipe it to grep if you want. I somewhat frequently do that with "git log", if I want to know "when did this variable change?" or whatever, just "git log -p" to get the log with diffs in less, then search for whatever it was with a slash.
by OskarS
5/18/2025 at 3:20:57 PM
Oh that’s clever, I’ll try that out. Looks like you could just do a git diff > file.patch.Neat.
by barbazoo
5/18/2025 at 3:30:27 PM
You’ll also want to familiarize with “git apply -3 <file name>”, for when a diff can’t be applied cleanly. It will try “harder” to merge (three way method) and if it still fails it invokes the conflict merge “UX”:<<<<<<<<<
=========
>>>>>>>>>
by johnrob
5/18/2025 at 9:29:07 PM
There's also Neil Brown's "wiggle" program for applying patches that don't apply.https://github.com/neilbrown/wiggle
although on debian based systems I think you can just "apt install wiggle"
by smcameron
5/19/2025 at 9:27:21 AM
What does "applying patches that don't apply" mean exactly?I know about wiggle, but I have not used it, to be honest.
by johnisgood
5/23/2025 at 4:23:16 AM
It means that if you do "patch -p1 --dry-run < some.patch", and it complains that it doesn't apply, wiggle can sometimes apply it anyway, and also, if you do "patch -p1 < some.patch", and it partially applies but with rejected hunks, wiggle can try to apply the rejected hunks.by smcameron
5/18/2025 at 6:13:36 PM
git diff an pipe works, but committing and then `git format-patch` can export multiple patches and then includes metadata (commit message, date, author, etc.) which can make reasoning about such files a lot easier. In a plain diff you only got filename as metadata.by johannes1234321
5/18/2025 at 3:42:33 PM
Thank you, will try. Useful bit of knowledge.by d3ckard
5/18/2025 at 3:21:29 PM
That’s a great idea, and very timely for me.by RaoulP