Forgot to use `--squash` and now the commit history is a mess. How can I clean up this mess?

StackOverflow https://stackoverflow.com/questions/18727984

Pergunta

I was supposed to perform subtree pull --squash for a third-party module that my project depends on, but I accidentally forgot to put --squash. Now my project commit history is flooded with the third-party module commits. They are scattered all over the log.

This mess needs to be gone. How would I identify all the commits that belongs to the third-party module, squash them into one, and then purge them from my project history, if possible at all?

More info:

Note that I have done several commits, that I intend to keep, after the broken operation.

Foi útil?

Solução

  1. Use git reflog to find your project's state from before you did the broken operation.
  2. Check out that hash or git reset --hard to it.
  3. Redo the operation with the correct flags.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top