The seeming incongruity that a lieutenant general outranks a major general, (while a major outranks a lieutenant), is due to the derivation of the latter rank from sergeant major general, which was also subordinate to lieutenant general.
И наконец, генерал-майор (от латинского major — старший, применительно к ситуации — старший там, куда пошлют) — это генерал, волей главнокомандующего старший над определённым участком поля боя, то есть помощник полного генерала на определённом направлении.