DX is still a work in progress; it's production quality but definitely has some known limitations. I do recall that this limitation is one that the DX team is looking to address, but that's not a current feature, so we can't depend on that.
This basically happens today because Salesforce doesn't do a full sync when pulling, but only tracks things that have changed on the server since the last push. Since there are no changes, it won't pull anything. In the future, a cleaner alternative might become available (hopefully sooner than later!).
Hopefully, you already have a package you can use in your scratch org to pull everything back down? If you do, it's pretty much as simple as:
sfdx force:mdapi:retrieve -p "Some Package" -d . -u userNameOrAlias
sfdx force:mdapi:convert -r "Some Package"
This assumes you have a project configuration file, want to use the default path, and just looking to put everything back in order. You'll have to do some clean up and diffs afterwards, but at least you'll be back in sync.
Otherwise, if you don't have a package, you'll have to build one, or a manual package.xml file to download everything you want. If you do that, the
force:mdapi:retrieve command uses
-k name-of-package.xml instead of the
-p "Package Name" format.