holy mackerel - exclamation of surprise - A blasphemous oath from the same 'family' as goddam and darn it, etc. Holy Mackerel dates back at least 200 years and is one of very many blasphemous oaths with the Holy prefix. Holy Mackerel was almost certainly a reference to Catholics eating fish on Fridays (rather like Holy Cow is a reference to Hindus, and Holy Smoke is a jibe at incense burning and funeral pyres; also Holy Moses - shortened to the rhyming Holy Moley or Holy Moly - the way that the words trip of the tongue is very significant in how these expressions become widely used and adopted, and Holy Mackerel does have a certain ring to it, in a way that Holy Skate, or Holy Cod do not... ). As well as being a popularly eaten fish of the times (affordable by Catholics on limited budgets - the insulting term 'mackerel snatchers' was also used for Catholics in the 19th century), the word Mackerel has historically been a strong fish symbol and fish stereotype (the French word maquereau is slang for 'pimp', due to its habit supposedly of leading other fish to their mates). The term Holy Mackerel would also have served as a euphemistic substitute for Holy Mary or Holy Mother of God, which is why words beginning with M feature commonly in these expressions.
'holy cow, holy cripes, holy hell, holy macaroni, etc - oath or exclamation of surprise - it's unlikely that a single origin exists for any of these 'holy this or that' expressions. Holy hell and others like it seem simply to be naturally evolved oaths from the last 200 years or so, being toned-down alternatives to more blasphemous oaths like holy Jesus, holy Mother of Jesus, holy God, holy Christ, used by folk who felt uncomfortable saying the more sensitive words. The principle extends further with the use of tamer versions which developed more in the 20th century, based on religious references and insults, such as holy cow (sacred beast), holy moly/holy moley (moses), holy smoke (incense), etc., which also reflect the increasing taste for ironic humour in such expressions. These sorts of euphemisms are polite ways of uttering an oath without apparently swearing or blaspheming, although of course the meaning and intent is commonly preceived just as offensively by those sensitive to such things. Other examples of religious/oath/swear-word euphemisms used with the Holy prefix include: cripes, (instead of Christ, as in crikey), crap (logical development/combination of previous), jeepers, jeez, (Jesus, as with jehosephat, jumping jehosephat), cod, mackerel (see holy mackerel entry above), mackinaw (Mary and/or mackerel), gosh, golly gosh (God), heck, (hell) gee, (jesus or ghost), fly, fiddlesticks (an alternative phonetically-pleasing F-word), schikes, shicker, (Aus/NZ), shoot, (instead of shit), and various obscure and daft-sounding others, loosely connected with biblical geography or imagery, or simply beginning with the same letters as the taboo word, which in themselves are not necessarily blasphemously based but which naturally assume a blasphemous value by attachment to the word holy, such as snakes, cats, Egypt, and bilge water (arguably partly or entirely from holy water).