--soft сбрасывает коммит так, будто git add на файлы сделан
--mixed сбрасывает коммит так, будто не было git add на эти файлы, это по-умолчанию.
--hard сбрасывает коммит и удаляет изменеия. Но, коммит доступен по своему хэшу, если он не удален gc
Видимо, никак. ну, либо подзапрос выполнить как RIGHT JOIN с основным запросом, тогда сначала выполнится подзапрос, затем основной запрос и при их джойне вернется 0 рядов.
правда, не представляю, зачем вам это нужно...