Problémem GITu je jeho "nízkoúrovňovost" a nutnost znát jeho střeva k pochopení spousty pokročilejších příkazů. Je tedy třeba se více zaměřit na to, "jak" něčeho dosáhnout. Naopak v Mercurialu a SVN většinou stačí vědět, "čeho" chci dosáhnout.
Z těchto rozdílů také vyplývá pojmenování příkazů a jejich parametrů, které jsou v GITu zaměřeny na "postup" a nikoliv na "výsledek". V SVN nebo Mercurialu například chci revert lokálních změn, udělám tedy "revert". Hotovo. V GITu poněkud nelogicky nepoužiji "revert" (ten navíc dělá něco jiného), ale "reset", protože přeci nebudu dělat jen prachsprostý revert lokálních změn, ale budu muset přemýšlet nad tím, že tam mám nějaký "index" (staging area) a pointery na commity atd. A aby se to nezdálo tak jednoduché, tak ještě musím řešit, zda náhodou nepoužít nějaký z přepínačů typu "--soft" a "--hard". Prostě nebylo možné mít jediný příkaz "revert" s několika vhodně pojmenovanými parametry.
Ano, GIT je flexibilnější v případech, že se chci opravdu pošťourat ve vnitřnostech, ale kolikrát za rok něco takového potřebuji, a musí to být na úkor komfortu běžného používání? Nejen pro začátečníka to může být dost frustrující.