At this point I see only one way out from all this mess. And it looks like the following git commit lines:
Dude, if you are going to show git commands at least try to make some semblence of getting them close to right - the commands you demonstrated will detach the head of a single developers tree to before the up, then will not commit anything because there is nothing to commit, then will not push anything because there is nothing to push. Even if you added an --allow-empty to make the commit do something it still won't push because it's not a fast-forward and you forgot to --force it or use the +syntax, but all of that is still wrong because the next developer that pushes something will bring all the breakages right back since you didn't revert it for everyone.
What you wanted was
git revert
to undo all the offending commits, not a checkout or reset.
I would have also accepted a git reset --hard (or git checkout) to before the up then a git reset --soft back to the current development tip so that the index will be equivelent of reverting every commit between the two, then commit that and push. Alternatively the soft reset and commit could be replaced with a
git merge --strategy=ours
, however that is probably the worst option because the history doesn't show a clear diff of what the merge actually did. Or, if you really want to get masochistic, there's always
git filter-branch --parent-filter
, and it wouldn't surprise me if there might be a few other methods could work as well (10 points if you can come up with any ;-p)
And all of that is assuming they are using git anyway, which is somewhat less likely than you may think in games because git doesn't handle binary files well and doesn't provide a means to exclusively lock a file that a given developer is working on - both of which are fairly important requirements for game development, though how important is somewhat dependent on the engine they are using, which types of assets are stored as binary vs text (e.g. UE4 stores almost everything as binary, including things like blueprints and UI layouts, so those can only be worked on by a single developer at a time), and for assets that are stored as text how easy/difficult it is to merge changes from multiple developers in practice (e.g. Unity stores most assets as text so they technically can be merged with source control, but I wouldn't really recommend it when it can be avoided). If they are using perforce that provides these features (note: while UE4's public tree uses git, Epic internally uses perforce), they need to do a "rollback" instead.