Welcome to Software Development on Codidact!
Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.
Can GitHub rewrite authorship of commits?
GitHub has a setting wherein they offer to "anonymize" your user email from, say, somebody@example.com to somebody@users.noreply.github.com. I presume this is to prevent you from getting spam from a scraper that reads the metadata on commits to public repositories.
How do they do this without invalidating the commit? Isn't the commit message, user, timestamp, and so on hashed along with the worktree state to get the commit hash?
My local Git is happy to pull stuff that other people have written on top of my commits with the anonymous author.
Does that mean that anyone with a clone of the repository can rewrite authorship of all the commits and still maintain the commit hashes of the original? Or is GitHub doing some giant translation between commit hashes on different forks?
1 answer
It doesn't change commit data when you push. You have to set your local email address to the noreply
one.
About commit email addresses
[…]
If you'd like to keep your personal email address private, you can use a
noreply
email address from GitHub as your commit email address. To use yournoreply
email address for commits you push from the command line, use that email address when you set your commit email address in Git. To use yournoreply
address for web-based Git operations, set your commit email address on GitHub and choose to Keep my email address private.
Instead, GitHub can block pushing commits that contain a non-noreply
email:
Blocking command line pushes that expose your personal email address
If you've chosen to keep your email address private when performing web-based operations, you can also choose to block command line pushes that may expose your personal email address.
When you push commits from the command line, the email address that you've set in Git is associated with your commits. If you enable this setting, each time you push to GitHub, we’ll check the most recent commit. If the author email on that commit is a private email on your GitHub account, we will block the push and warn you about exposing your private email.
1 comment thread