Sdílet prostřednictvím


Citlivost písmen v Git

Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019

Systémy souborů Windows a macOS jsou ve výchozím nastavení nerozlišující malá a velká písmena (ale zachovávají jejich původní podobu). Většina souborových systémů Linuxu rozlišuje malá a velká písmena. Git byl původně vytvořen jako systém správy verzí pro jádro Linuxu, takže není divu, že rozlišuje malá a velká písmena.

I když se mnoho problémů s operačním systémem, který nerozlišuje velká a malá písmena, řeší v Git pro Windows, zůstává několik nedostatků.

Názvy souborů a složek

Na Linuxu klonování úložiště Git, které obsahuje jak "File.txt", tak "file.txt", není problém. Jedná se o odlišné názvy souborů. V systému Windows a macOS povede stažení obou souborů k tomu, že druhý přepíše první. Pokud se dvě složky liší jenom v jednotlivých případech, jejich obsah se splete na systémech souborů bez rozlišování malých a velkých písmen.

Oprava konfliktů případů

Jedním ze způsobů, jak opravit úložiště s tímto problémem, je vyzkoušet ho v prostředí citlivém na malá a velká písmena. Přejmenujte soubory a složky, aby už nebyly v konfliktu, a pak tyto změny nasdílejte do úložiště. subsystém Windows pro Linux je jedním z takových prostředí. Dalším přístupem je použít příkaz git mv -f <conflicting name> <non-conflicting name> pro každý konflikt, přičemž buďte opatrní při použití přesného velká písmena u obou názvů souborů.

Předcházení konfliktům případů

Je dobré se vyhnout tomu, aby se tato situace vytvářela v prvé řadě. Azure Repos nabízí nastavení vynucování případů, aby se zabránilo pushům, které by k této situaci vedly. Vývojářům pomůže také používání funkce dokončování pomocí tabulátoru k potvrzení souborů. Vzhledem k tomu, že Windows i macOS zachovávají velikost písmen, zajistí se tím, že interní systém Git uvidí stejný způsob zápisu písmen jako systém souborů.

Názvy větví a štítků

Můžete vytvořit dvě větve nebo značky (označované jako odkazy), které se liší pouze v velikostech. Interní mechanismy Gitu i Azure DevOps Services/TFS s nimi budou zacházet jako se dvěma samostatnými refy. Git na počítači uživatele používá systém souborů k ukládání refs. Načítání a další operace začnou selhávat kvůli nejednoznačnosti. Každý odkaz je reprezentován malým souborem a pokud název odkazu obsahuje / znaky, části před konečným / jsou reprezentovány složkami.

Jedním z jednoduchých způsobů, jak se vyhnout problémům, je vždy používat názvy větví a značek malými písmeny. Pokud jste už vytvořili dvě větve nebo značky s tímto problémem, můžete je opravit ve webovém uživatelském rozhraní Azure Repos.

Oprava názvů větví

Na stránce větví přejděte na související commit. V místní nabídce zvolte "Nová větev". Dejte větvi nový název, který nemá konflikt velkých a malých písmen. Vraťte se na stránku větví a odstraňte konfliktní větev.

Oprava názvů značek

Postup opravy názvu značky je podobný větvím. Na stránce značek přejděte na označený commit. V místní nabídce zvolte Vytvořit značku. Dejte značce nový název, který nemá konflikt písmen. Vraťte se na stránku značek a odstraňte konfliktní značku.