Skip to main content
Penyaskito Blog

Main navigation

  • Home
  • Contact
Language switcher
  • English
  • Español
User account menu
  • Log in

Breadcrumb

  1. Home

Rewriting history on a git repository for editing author and email on past commits

By penyaskito, 30 December, 2021

Today I needed to rewrite some git repo commits from a very recently created repository where only I had committed, but from multiple systems with different setups; my usual setup with the proper info, another one where I didn't add the global user.email git property yet, and also added the license file from gitlab itself. So basically I had three different mail addresses and two different names associated with different commits that I wanted to unify, as that's a pretty messed up history for a very recent repo.

As I found on this question on StackOverflow about git author rewriting, that can be done with git-filter-repo tool:

For installing it, I used brew (but it's available in most package managers) with just: 

brew install git-filter-repo

So then you can use it as:

git-filter-repo --name-callback 'return name.replace(b"oldName", bytes("newNameWithUtf8Chars", "utf-8"))' --email-callback 'return email.replace(b"oldmail@example.com", b"newmail@example.com")' --force

After that I had to re-add the remote and git push --force. Take into account that this rewrites history, so you (and your team) might need to reclone the repo. Please plan this accordingly.

Also take into account that if the branch is protected, you might need to add permissions for allowing to push. I allowed that temporarily following Allow force push on a protected branch on Gitlab docs.

 

Tags

  • git

Comments

The content of this field is kept private and will not be shown publicly.
About text formats

Plain text

  • No HTML tags allowed.
  • Web page addresses and email addresses turn into links automatically.
  • Lines and paragraphs break automatically.

Monthly archive

  • December 2021 (1)
  • May 2021 (2)
  • April 2021 (1)
  • September 2014 (1)
  • November 2012 (1)
  • September 2012 (2)
  • August 2012 (3)
  • June 2012 (6)

Recent content

Rewriting history on a git repository for editing author and email on past commits
1 year 3 months ago
A Drupal JavaScript behavior for marking edited line items in the cart
1 year 10 months ago
Profiling Drupal, WordPress or any php application with DDEV, XHProf and XHGui
1 year 10 months ago
A personal site upgrade from Drupal 7 to Drupal 9: some migration tips
1 year 11 months ago
Salesforce: generating Excel files from VisualForce APEX pages
8 years 6 months ago
Drupalcamp Spain 2012
10 years 4 months ago
Non-interactive performance tests and reporting with JMeter
10 years 6 months ago
Git workflow with submodules for Drupal deployment
10 years 6 months ago
Remoting for the Drupalcon Munich D8MI Sprint
10 years 7 months ago
Drupal Sevilla Talk: Contributing to Drupal
10 years 7 months ago

Recent comments

Thanks for the comment
1 year 10 months ago
Thanks for sharing this…
1 year 10 months ago
Looking good!
1 year 11 months ago
lopd
8 years 11 months ago
LOPD
9 years ago
Gridinit
10 years 5 months ago
Ya la tiene
10 years 6 months ago
Debería :-P
10 years 6 months ago
Ei! tiene buena pinta...
10 years 6 months ago
Buenas Fco Antonio,
10 years 6 months ago

Blogs I follow

Mateu Aguiló "e0ipso"
Gábor Hojtsy
Pedro Cambra
The Russian Lullaby, davidjguru
Can It Be All So Simple
Maria Arias de Reyna "Délawen"
Matt Glaman
Josef Ottosson (dotnet)
Daniel Wehner
Jacob Rockowitz
Syndicate

Footer

  • Contact
  • Drupal.org
  • LinkedIn
  • GitHub
  • Twitter
Powered by Drupal