Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I wish Git had a way to "skip" a commit for blame for mechanical changes like this. It's the one big shortcoming I keep running into. A commit should be able to be marked as "blame-free" and git blame should then walk up to the parent commit.

It might be expensive to compute but man it would be so useful.

Edit: TIL about .git-blame-ignore-revs. I am the 1 in 10000 for this one today, thanks.



It does. See `--ignore-revs-file`:

https://git-scm.com/docs/git-blame

You can configure a default:

  git config blame.ignoreRevsFile .git-blame-ignore-revs
GitHub supports it too:

https://docs.github.com/en/repositories/working-with-files/u...

I'm really curious though. This is a feature you've wished for: have you never bothered to run `man git-blame`, `git blame --help`, or Google for it? Git has supported it for ages and it's a trivially easy feature to find. Using your own description:

https://www.google.com/search?hl=en&q=git%20skip%20commit%20...


Nice to see ignore-revs getting some love :)

I originally wrote it because I wanted to do a mass-refactoring to llvm-project to change its weird naming convention and "it will mess up git blame" was an objection that was raised. Getting ignore-revs landed took many iterations over several months (thanks Barret!) and at the end of it I felt so drained that I didn't have the energy to do the mass refactoring I originally planned. Oh well. Maybe someday.


A big thank you! Blame history being correct is something i care quite a bit about and I always add one of these files when I do formatting changes. I think I'm probably the only developer on my teams with this configured on though haha!


The annoying thing about git is that you can't really set this kind of stuff up globally for a project w/o digging into some custom hook solutions. They should really have some kind of default config file with all these things. I really don't understand why everything needs to be per user settings ONLY.


Whoa, it looks like my old patch is getting fixed up properly now! We might be getting this feature https://lore.kernel.org/git/20250501214057.371711-4-gitster@...


It would be a lot more usable if you could put that info in the commit.


No. I don’t want the author to make that decision for me. I’d rather git record everything and then I can choose how to view or render it.

Different people have different view preferences.


Ok but why not both checked in and user settings with the user overriding the repo?


That on its own is a security risk, as it would introduce means to hide a commit in the commit itself.

At least with the . file you have to make 2 separate transactions.


No it wouldn't. You would still be able to see the commit in logs and file histories and if you ran blame without the skipping option.


I would guess quit a few malware authors would also love such a feature.


I've been using Git since the early 2010s and this feature was released in Aug 2019 (https://github.blog/open-source/git/highlights-from-git-2-23...).

You don't think I looked for it for the first 7-8 years of using Git at least a few times and came up empty? Seems a little uncharitable. Hacker News is a place to learn about stuff, not be chided for missing a point note in a release.

Come on man, you've been using HN for almost as long as I have. Be curious, treat people's comments with charity, continue the life-long learning tradition.

Obligatory XKCD lucky 10,000 link: https://xkcd.com/1053/


You're right. My apologies. It wasn't meant as a critique. I've been using git even longer and my memory was that the feature had been there way before 2019. Time flies. Relevant commit:

https://github.com/git/git/commit/ae3f36dea16e51041c56ba9ed6...


Thanks. Git (proj.) commits can be an enjoyable read.


I like how the length of the commit message is at the same order of magnitude as the commit itself.


`.git-blame-ignore-revs` is probably what you are looking for

Example: https://gist.github.com/kateinoigakukun/b0bc920e587851bfffa9...


My one gripe with this is that devs need to point their IDE to the file in the IDE settings. When I implemented .git-blame-ignore-revs, I got a lot of people complaining about blame disappearing completely and I had to point them all to editing IDE settings


`blame -w` ignores the ones that are described in the article.


Everybody else here has a fantastic solution to your complaint but wouldn't it be even better to think big here, and wish that stupid whitespace formatting issues weren't something that git was tokenizing to begin with?


Whitespace is important for a myriad of reasons, so the implementation makes sense to me. However, I would love to see git have configuration surrounding syntax awareness. That's a huge undertaking, though, but one can dream.


git-blame-ignore-revs is great, but ultimately a half measure. Replace blame with log -L


Is .git-blame-ignore-revs what you are looking for?


See also `git blame -w`




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: