Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

"git filter-branch" successfully used to change committer/author, but changes don't reflect on github

I recently replaced the author, committer and emails thereof in all of my local commits, using the following command:

git filter-branch -f --env-filter '
if [ "$GIT_COMMITTER_NAME" = "oldname" ];
then
    GIT_COMMITTER_NAME="newname";
    GIT_COMMITTER_EMAIL="newaddr";
    GIT_AUTHOR_NAME="newname";
    GIT_AUTHOR_EMAIL="newaddr";
fi

if [ "$GIT_AUTHOR_NAME" = "oldname" ];
then
    GIT_COMMITTER_NAME="newname";
    GIT_COMMITTER_EMAIL="newaddr";
    GIT_AUTHOR_NAME="newname";
    GIT_AUTHOR_EMAIL="newaddr";
fi
' -- --all

The updates are immediately evident locally (e.g. in my SourceTree environment). However, after force-pushing the modified repository to GitHub…

git push -f origin master

… two individual items stubbornly refuse to have their committer and author updated: the Gemfile.lock file and a Views directory.

Please also note that:

  1. This is the second time that I am performing this kind of operation on this repository. I believe that I faced no such issues the first time around.

  2. Searching for my old name in the repository…

    $ find . "<oldname">
    

does yield a bunch of results, which means that the oldname still lurks in many of the repository files — including files that appear update both on GitHub and locally.

My question, then: How can I change the committer/author of the two "stubborn" files on GitHub?

like image 305
BorromeanNot Avatar asked Jun 06 '12 05:06

BorromeanNot


People also ask

How do I change the author and committer email in git?

The git commit --amend --reset-author --no-edit command is especially useful if you created commits with the wrong author information, then set the correct author after-the-fact via git config .


1 Answers

After using git filter-branch, git still retains a backup copy of the history of the repo in refs/original. This is so that if you mess something up with filter-branch, you can revert if need be. Once you're sure everything went smoothly, you can remove the backed up ref with:

git update-ref -d refs/original/refs/heads/master

For some reason, it still takes an additional commit for github to reflect the change. I'll add a space or something to the readme, commit and push... after that, github reflects the correct authors on the project page.

like image 87
Alex Medearis Avatar answered Nov 15 '22 07:11

Alex Medearis