We are having an issue with our GitHub repository. I shall explain our workflow:
Developers create feature/bug fix branches from the mainline branch. They pull request their changes to get it merged back in. They may rebase from the mainline branch to get the latest updates from that as they work. After a rebase they push --force on their feature branch.
Two pull requests were automatically merged using the GitHub web interface recently. Subsequently - about two days after the merge of the request - it was discovered that the changes in these commits were not in the code. Nothing in the history suggests that these changes were reverted or overwritten. The merges themselves do not appear in the commit history and the individual commits themselves do not appear either. But the pull request was successfully merged. One of the missing commits is no longer available to cherry pick. We get a fatal - bad object message when we try.
We suspect some rewriting of history has happened. How can we find out and how can we prevent this from happening. Is there something fundamentally wrong with our workflow?