Condividi tramite


Distinzione tra maiuscole e minuscole git

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

I file system Windows e macOS non fanno distinzione tra maiuscole e minuscole (ma conservano maiuscole/minuscole) per impostazione predefinita. La maggior parte dei file system Linux fa distinzione tra maiuscole e minuscole. Git è stato creato originariamente come sistema di controllo della versione del kernel Linux, quindi, come previsto, fa distinzione tra maiuscole e minuscole.

Anche se molti dei problemi relativi a un sistema operativo senza distinzione tra maiuscole e minuscole sono stati risolti in Git per Windows, rimangono alcuni strani problemi.

Nomi di file e cartelle

In Linux, controllare un repository Git che contiene sia "File.txt" che "file.txt" non è un problema. Si tratta di nomi file distinti. Su Windows e macOS, l'estrazione di entrambi i file comporterà che il secondo sovrascriva il primo. Se due cartelle differiscono solo per differenze nella maiuscolatura, i loro contenuti si mescoleranno in file system senza distinzione tra maiuscole e minuscole.

Correzione dei conflitti tra maiuscole e minuscole

Un modo per risolvere un repository con questo problema consiste nel verificarlo in un ambiente con distinzione tra maiuscole e minuscole. Rinominare file e cartelle in modo che non siano più in conflitto, quindi eseguirne il push nel repository. #B0 Windows Subsystem per Linux #C1 è un ambiente di questo genere. Un altro approccio consiste nell'usare il comando git mv -f <conflicting name> <non-conflicting name> per ogni conflitto, prestando attenzione all'uso di maiuscole e minuscole esatte su entrambi i nomi di file.

Evitare conflitti tra maiuscole e minuscole

È consigliabile evitare di creare questa situazione in primo luogo. Azure Repos offre un'impostazione di imposizione dei casi per evitare push che causerebbero questa situazione. Per gli sviluppatori, anche l'adozione dell'abitudine di usare il completamento con tabulazione per eseguire il commit dei file può essere utile. Poiché windows e macOS conservano le maiuscole e minuscole, ciò garantisce che gli interni di Git visualizzino esattamente la stessa combinazione di maiuscole e minuscole usata dal file system.

Nomi dei branch e dei tag

È possibile creare due rami o tag (noti come "refs") che differiscono solo per essere sensibili alle maiuscole e minuscole. Gli interni di Git, nonché Azure DevOps Services/TFS, li considereranno come due riferimenti separati. Nel computer di un utente Git usa il file system per archiviare i riferimenti. Le operazioni di recupero e altre operazioni iniziano a non riuscire a causa dell'ambiguità. Ogni riferimento è rappresentato da un file di piccole dimensioni e, se un nome di riferimento contiene / caratteri, le parti prima della finale / sono rappresentate dalle cartelle.

Un modo semplice per evitare problemi consiste nell'usare sempre i nomi di tag e di ramo in lettere minuscole. Se sono già stati creati due rami o tag con questo problema, è possibile risolverli nell'interfaccia utente Web di Azure Repos.

Correzione dei nomi dei rami

Dalla pagina delle branche, accedere al commit correlato. Nel menu di scelta rapida scegliere "Nuovo ramo". Assegna al ramo un nuovo nome evitando conflitti di maiuscole. Tornare alla pagina dei rami ed eliminare il ramo in conflitto.

Correzione dei nomi dei tag

I passaggi per la correzione di un nome di tag sono simili ai rami. Dalla pagina dei tag, naviga al commit taggato. Nel menu di scelta rapida scegliere "Crea tag". Assegna al tag un nuovo nome che non crei conflitti di maiuscole. Tornare alla pagina dei tag ed eliminare il tag in conflitto.