Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Git - Duplicate commit issue

Tags:

git

I accidentally created commits by "unknown" in my repository, and decided to try running a command from here:

git filter-branch --commit-filter '
        if [ "$GIT_COMMITTER_NAME" = "unknown" ];
        then
                GIT_COMMITTER_NAME="..";
                GIT_AUTHOR_NAME="..";
                GIT_COMMITTER_EMAIL="...";
                GIT_AUTHOR_EMAIL="...";
                git commit-tree "$@";
        else
                git commit-tree "$@";
        fi' HEAD

At first I thought everything was fine, until I noticed in gitk that every commit prior to running this was duplicated, not simply edited as I originally thought.

Is it possible to clean this up?

EDIT: OK, gitk is showing both the old commits (the ones with the "unknown" commiters mixed in) and the new commits (the rewritten ones), split up at a certain point around halfway. Think a bunch of commits, then duplicated (and with the edits), and stacked on top of the original ones. What I want to do is if possible, is remove the original ones.

like image 283
unrelativity Avatar asked Dec 30 '09 23:12

unrelativity


2 Answers

The answer was the files in .git/refs/original, and how the command I found should not have ended in HEAD but instead with --tag-name-filter cat -- --all.

Cheers to _Vi and wereHamster from the #git channel for the help.

like image 103
unrelativity Avatar answered Sep 19 '22 16:09

unrelativity


If you know the last good commit, save your bacon with this:

git reset <last_good_commit>   # Warp back to a good state.
git push -f master             # Push the changes up (you need -f to force it to
                               #  obliterate old commits).

If you want to tread more carefully (for example, if there are good and bad commits mixed in after <last_good_commit>), use git rebase -i to cherry-pick the good ones that should stay behind.

like image 35
John Feminella Avatar answered Sep 19 '22 16:09

John Feminella