There is no general rule that a language construct such as a phrase or sentence must not contain redundancy.
In some of the world's languages we find, for instance, double negative constructs, which are mandatory. In English sentences, the subject and verb must agree in number, and so that is redundancy: for instance "you are" conveys plurality in two words, where one would suffice (and language can do without plurals entirely).
It may be your personal stylistic preference to avoid "revert back", but it's used by native speakers.
Some usages are more euphonic than others.
"Revert the software back to the previous version" doesn't sound bad.
"Return back home" is mildly awkward.
Note that in some uses of "give back", the "back" is semantically redundant, even though its presence is preferred over its absence. For instance, when we tell someone "give it back to me", the "back" appears even if nobody is listening other than the person we are speaking to (nobody is being informed that the situation is one of an item being returned rather than granted) and both parties already know the situation.
Also, note this common construction:
Give me back my [object]!
The "back" is clearly redundant because it's my object and you have it; "give me my [object]" by itself already means "return my object".
Perhaps because of patterns like this, English speakers are somewhat prepared to accept a redundant "back".
Also note this pattern:
Return my [object] to me!
Of course, if it's my object, returning is directed to me if nobody else is mentioned; there is redundancy: return my [object]!" already says everything. If the speaker wants his object returned to Bob rather than to herself, then Bob has to be explicitly mentioned: "Please return my pen to Bob."
I'm afraid that if you want to fight redundancy in language, you will face some lonely and difficult battles ahead, and ultimately redundancy will win the war.