“Feisty” comes from a Middle English/Proto-Germanic word for “fart,” and also implies “farty dog.”
Feisty, which today can mean “lively, determined and courageous” or “touchy and aggressive” (especially when referring to a smallish animal or person), arose in American English around 1896. Prior to that, the word feist was an early 19th-century term for “small dog.” While this definition of feist is apt and logical given the belligerent ballsiness of most small dogs, at this point the etymology ventures into more humorous territory.
See, feist first came to refer to a small dog as a shortened version of the English phrase fysting curre (i.e., “stinking cur”), in which context fyst was a mid-15th-century word for… fart. Seriously.
In Middle English, fysten or fisten meant “break wind,” from the Proto-Germanic noun fistiz (“fart”), which probably came from the PIE pezd- (also the root of “fart” itself).
The 1811 Dictionary of the Vulgar Tongue (which incidentally also lists more than 35 words for “The Monosyllable,” or “cunt”)† suggests that “feist” and “dog” overlapped due to the fact that ladies would blame their farts on their little pet dogs. It defined the word fice or fise as “a small windy escape backwards, more obvious to the nose than ears; frequently by old ladies charged on their lap-dogs.” (Related: fise is a Danish cognate meaning “to blow” or “to fart,” while the Middle English askefise was another word for a bellows, literally “ash-blower.”)
† re: The Monosyllable. A Classical Dictionary of the Vulgar Tongue by Francis Grose, which you can read in its entirety here, contains about 13 references to The Monosyllable and about 38 other words meaning the same thing. I swear I once discovered one that included about 500 colloquial synonyms for the same word, but I cannot for the life of me recall which book it was. I will keep looking. Grose is largely credited with the perpetuation of the “The Monosyllable” euphemism, but it is my understanding that it is older than his works.