开发者

Git - Duplicate commit issue

开发者 https://www.devze.com 2022-12-15 07:22 出处:网络
I accidentally created commits by \"unknown\" in my repository, and decided to try running a command from here:

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_CO开发者_如何学JAVAMMITTER_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.


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.


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.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号