6 ms·
Show HN: Git-knife – Edit commit messages, authors, and dates like a spreadsheet
- hootz 2mo agoWould be great to have this, but as a TUI tabular editor.
- YonathanTesfaye 2mo ago[dead]
- ffsm8 2mo agoits vibecoded. just point another vibe based harness at it and youll have it in an hour or two. this thing is as trivial as you can get get, scope wise
- YonathanTesfaye 2mo agoI built a small Tauri app that just shows your commits in a table and lets you edit message/author/date directly, plus find & replace with regex if you need to fix a bunch at once. It backs up the branch before it rewrites anything doesn't touch file contents, just metadata.
- deleted 2mo ago[deleted]
- cautiouscat 2mo agoThis looks cool! Are there screenshots available?
- YonathanTesfaye 2mo agohttps://imgur.com/a/V5EGCOw https://imgur.com/a/V5EGCOw
- esafak 2mo agoI'd put that in the repo not here.
- YonathanTesfaye 2mo agoyou're right, done
- yboris 2mo agoPlease put up this or another screenshot as the first thing you see in the README - please! I'm reluctant to clone a repository and spend time on it just to find out the project looks crap and I don't want to use it. A screenshot saves other people's time :)
- YonathanTesfaye 2mo agodone
- everybodyknows 2mo agoUnreadable in iPad Safari -- delayed popup darkens the screen and demands app install.
- YonathanTesfaye 2mo agoah that's imgur. moved it to a github-hosted image should be fine now.
- no-name-here 2mo agoThanks, but is that a photo of a screen instead of a screenshot and that’s why it looks cloudy/random splotches are brighter? Regardless, it’s better than nothing, thank you.
- mellosouls 2mo agoHmmm, this seems to be making easy something you normally should not do.
- YonathanTesfaye 2mo agoAgreed mostly. The intent is local cleanup before you push like fixing a wrong author email across a batch or dates from a machine with a bad clock
- Carrok 2mo agoSo, exactly like a knife? Generally we don't want to cut people open, but when we need to do it, like during surgery, a sharp knife sure helps.
- YonathanTesfaye 2mo agothat's it
- slashdave 2mo agoSpreadsheet? that's a meat cleaver, not a scalpel
- nkrisc 2mo agoBased on the name I have to imagine the author knew this. A knife is a dangerous tool if used improperly, and invaluably useful when used properly.
- YonathanTesfaye 2mo agothat was the idea
- sixtyj 2mo agoExtra points for the name.
- YonathanTesfaye 2mo agoAppreciate it! pick a commit, stab it
- sixtyj 2mo agoSlicing or cutting fat is imho better ;)
- iamcoder18 2mo agoThis is cool, but has anyone ever needed to rewrite commit authors or dates?
- deleted 2mo ago[deleted]
- icase 2mo agoyes; when i wanted to make it look like i didn’t procrastinate for a week and implement the entire feature in one day
- xp84 2mo agoYes, for instance it could be useful if someone’s been accidentally committing with a bogus email address. Or if you’re cleaning up some sort of mess and would like to recreate an accurate history. Obviously as with any “force push” situation, the usual caveats apply if this is on a branch others have checked out, but if the mess is big enough, it is sometimes worth it to send everyone a script to reset or just to have people delete and re-check-out.
- schainks 2mo agoIf someone's been committing with a bogus email address and they're still working on the project, shouldn't they clean up their own commits?
- blazarquasar 2mo agoYeah, using this tool for example?
- throwaway613746 2mo ago[dead]
- webstrand 2mo agoUsually its me who has been committing with a bogus email address, because I don't like having my real user/email set in my $HOME/.gitconfig
- f1shy 2mo agoI would like to see something like this in magit. Other there is already?
- YonathanTesfaye 2mo agoNo idea not an emacs person does magit handle bulk author/date edits or just reword? genuinely curious
- deleted 2mo ago[deleted]
- NichoPaolucci 2mo ago“It never reimplements git — it shells out to the system git CLI and rebuilds commits with git commit-tree, reusing each commit's original tree so file contents are provably never changed.” Glad the LLM noted this - I was worried this would reimplement git
- YonathanTesfaye 2mo agoHa ha fair. But yeah shelling out to git and reusing the original tree object was deliberate means file contents can't change even if I screw up elsewhere.
- Myzel394 2mo agoWhy would you think such a project would reimplement git?
- mminer237 2mo agoI believe that was sarcasm.
- deleted 2mo ago[deleted]
- deleted 2mo ago[deleted]
- whateveracct 2mo agowhy can't anyone just do things themselves anymore? it's all LLM crap
- danudey 2mo agoFor what it's worth, I've used Claude to write a lot of smaller utility tools that I wouldn't normally have the time to sit down and implement, but which also solve straightforward problems. One small example is an extension for the `gh` cli where I give it a PR number and multiple branches and it cherry-picks that PR to those branches, or lets me know if some of the branches don't work. For managing multiple release branches it's very handy, but not so handy that I would have spent a lot of time and energy doing a good job of it. This seems like a similar sort of thing - a user friendly way to do something that most people don't need, and most people who need it probably don't need it very badly. I haven't used claude to replace my actual skills - researching, solving problems, etc. - but I do use it to replace all the stuff which is essentially 'spend a few hours reading API docs and writing boilerplate code'.
- Kerman 2mo ago[dead]
- jauntywundrkind 2mo agoTwo recent threads where I sing some praises of git rebase -i, specifically linking it to a spreadsheet. Awesome to see this pop up, feels serendipitous! Git rebase -i is not that scary 119 points, 16 days ago, 151 comments https://news.ycombinator.com/item?id=49053385 https://news.ycombinator.com/item?id=49053385 https://cachebag.sh/journal/interactive-rebasing/ https://cachebag.sh/journal/interactive-rebasing/ Staging patches with git add 34 points, 12 days ago, 52 comments https://news.ycombinator.com/item?id=49048570 https://news.ycombinator.com/item?id=49048570 https://cachebag.sh/journal/interactive-rebasing/ https://cachebag.sh/journal/interactive-rebasing/ Really enjoying jj these days but the git rebase -i spreadsheet remains such a winner. Expanding it more, leaning in, ftw.
- unqueued 2mo agoI appreciate that it uses git-notes and that is makes backup branches in it's own namespace. I wish it were a bit lighter though. Haven't seen mentioned, but you might want to check out https://github.com/mystor/git-revise https://github.com/mystor/git-revise
- beart 2mo agoIt looks like the screenshot was an actual photo of someone's monitor. I'm left wondering why print screen wasn't utilized. And for some reason it really makes me not want to touch this project.
- Conscat 2mo agoI thought it was a semi-transparent window until I read this. The curvature makes that clear, wow!
- YonathanTesfaye 2mo agoit is a actually a screenshot, that's zorin's window transparency doing that
- gcr 2mo agoThere is no curvature in the screenshot, only a semitransparent background
- skinfaxi 2mo agoLooking at the metadata it says it is a Gnome screenshot. What a pointless and incorrect non-sequitor. exiftool -a -u -g1 ~/Downloads/screenshot.png ---- ExifTool ---- ExifTool Version Number : 13.55 ---- System ---- File Name : screenshot.png Directory : XXX File Size : 1260 kB File Modification Date/Time : 2026:08:11 16:24:37-04:00 File Access Date/Time : 2026:08:11 16:24:41-04:00 File Inode Change Date/Time : 2026:08:11 16:24:41-04:00 File Permissions : -rw-r--r-- ---- File ---- File Type : PNG File Type Extension : png MIME Type : image/png ---- PNG ---- Image Width : 2351 Image Height : 1388 Bit Depth : 8 Color Type : RGB with Alpha Compression : Deflate/Inflate Filter : Adaptive Interlace : Noninterlaced Significant Bits : 8 8 8 8 Software : gnome-screenshot Creation Time : Mon 10 Aug 2026 10:19:53 PM +03 ---- Composite ---- Image Size : 2351x1388 Megapixels : 3.3
- lrvick 2mo agoNote: This will not work and cannot work on repos that use signed commits from multiple authors. Signed git history is immutable, and unsigned git history is a supply chain attack vector. That said I could see this being useful for single-author WIP branches doing cleanup before a PR
- YonathanTesfaye 2mo agoadded a warning for this in v0.2.0 signed commits now flag before the rewrite, it can know resign rebuilt commits with your key. https://github.com/TheRealYT/git-knife/releases/tag/v0.2.0 https://github.com/TheRealYT/git-knife/releases/tag/v0.2.0
- lrvick 2mo agoThat sure helps for personal use cases, and interesting! If you have more than one author in the history though that won't work, but I imagine where this is used the most is by an author cleaning up their own PRs. Appreciate being heard on this sort of thing! Will take a closer look.
- dhruv3006 2mo agothat's a catchy name - good luck.
- YonathanTesfaye 2mo agothanks
- Defletter 2mo agoThis is, funnily enough, something I've been periodically searching for for nearly a decade, and even renewed my search yesterday. For those wondering, my use case is a model Parliament (context: https://news.ycombinator.com/item?id=43474850 https://news.ycombinator.com/item?id=43474850) and deciding on using git to store the laws, with the commits representing the Acts of Parliament themselves. The problem is that we need to guarantee that every commit has the correct metadata: we do not care at all about the conservation of commit hashes. And if we've accidentally missed a law and need to interactively-rebase it into the git history, it should NOT reset all the subsequent commit dates to the current timestamp. Basically, we're wanting to use git as a historical archive. I'm delighted to have found this.
- TiddoLangerak 2mo agoFwiw, in plain git, there's 2 dates associated with commits. The author date tells when the content was authored, and doesn't change with rebase. Only the commit date changes. So the correct metadata is already there, and even more precise. It can tell you both when it was authored, and when it's history was last changed.
- Defletter 2mo agoThe author date was when it was introduced to Parliament, the commit date is the date of Royal Assent. Ditto with the date a referendum was called versus when its results were certified, etc.
- vivzkestrel 2mo ago- make a drag and drop ui for git rebase - i should be able to change order of commits - i should be able to change what files went in a previous commit
- YonathanTesfaye 2mo agonoted
- vancekai 2mo ago[dead]