Hoe hernoem je een map op de juiste manier in een Git-repository?

Ik denk dat het zou moeten werken om de map te kopiëren die hernoemd moet worden naar een nieuwe map met de gewenste naam, en verwijder de old directory, en git add, git commiten pushalles. Maar is dit de beste manier?


Antwoord 1, autoriteit 100%

Basis hernoemen (of verplaatsen):

git mv <old name> <new name>

Hoofdlettergevoelig hernoemen—bijv. van casesensitivetot casesensitive: u moet twee stappen gebruiken:

git mv casesensitive tmp
git mv tmp CaseSensitive

(Meer over hoofdlettergevoeligheid in Git…)

…gevolgd door commit en push zou de eenvoudigste manier zijn om een map in een git repo te hernoemen.


Antwoord 2, autoriteit 9%

Als u deze foutmelding krijgt: fataal: hernoemen van ‘mapnaam’ mislukt: ongeldig argument

Probeer dit:

*nixOS

git mv foldername tempname && git mv tempname folderName

WinOS

git config core.ignorecase false; git mv foldername tempname; git mv tempname folderName


Antwoord 3, autoriteit 5%

1. Wijzig de naam van een map van oude map in nieuwe map

git mv oldfolder newfolder

2. Als newfolder al in uw repository staat & je wilt het overschrijven en het volgende gebruiken:-forceren

git mv -f oldfolder newfolder

Vergeet niet de wijzigingen toe te voegen aan index & commit ze na hernoemen met git mv.

3. Hernoemen van mapnaam naar mapnaam op hoofdletterongevoelige bestandssystemen

Eenvoudig hernoemen met een normaal mv-commando (niet git mv) wordt niet herkend als een bestandswijziging van git. Als je het probeert met het ‘git mv’-commando zoals in de volgende regel

git mv foldername folderName

Als je een hoofdletterongevoelig bestandssysteem gebruikt, b.v. u een Mac gebruikt en deze niet hoofdlettergevoelig hebt geconfigureerd, krijgt u een foutmelding zoals deze:

fataal: hernoemen van ‘mapnaam’ mislukt: ongeldig argument

En hier is wat u kunt doen om het te laten werken:-

git mv foldername tempname && git mv tempname folderName

Hiermee wordt het hernoemen opgesplitst door de map eerst te hernoemen naar een geheel andere mapnaam. Na het hernoemen naar de andere mapnaam kan de map eindelijk worden hernoemd naar de nieuwe mapnaam. Vergeet na die ‘git mv’s’ nogmaals niet om de wijzigingen toe te voegen en vast te leggen. Hoewel dit waarschijnlijk geen mooie techniek is, werkt het prima. Het bestandssysteem zal nog steeds geen verandering van de lettergevallen herkennen, maar git doet dat wel vanwege het hernoemen naar een nieuwe mapnaam, en dat is alles wat we wilden 🙂


Antwoord 4

U kunt de map hernoemen met behulp van het bestandssysteem. Dan kun je git rm <old directory>en git add <new directory>doen (Help-pagina). Dan kun je committen en pushen.

Git zal detecteren dat de inhoud hetzelfde is en dat het slechts een hernoemingsoperatie is, en het zal verschijnen als een hernoemingsitem in de geschiedenis. Je kunt controleren of dit het geval is voor de commit met behulp van git status


Antwoord 5

veel juiste antwoorden, maar toen ik hier belandde om te kopiëren & plak een map hernoemen met geschiedenis, ik vond dat
dit

git mv <old name> <new name>

verplaatst de oude map(zelf) om te nesten in de nieuwe map

terwijl

git mv <old name>/ <new name>

(let op de ‘/’)
verplaatst de geneste inhoudvan de oude mapnaar de nieuwe map

beide opdrachten kopieerden niet de geschiedenis van geneste bestanden. Ik heb uiteindelijk elke geneste map afzonderlijk hernoemd ✔

git mv <old name>/<nest-folder> <new name>/<nest-folder>

Antwoord 6

Vanaf Web Application denk ik dat je dat niet kunt, maar je kunt alle mappen in Git Client hernoemen, het zal je bestanden verplaatsen naar de nieuwe hernoemde mappen, dan committen en pushen naar externe repository.

Ik had een vergelijkbaar probleem:
Ik moest verschillende mappen hernoemen van hoofdletters naar kleine letters (zoals Abc -> abc), ik heb alle mappen hernoemd met een dummy-naam (zoals ‘abc___’) en vervolgens vastgelegd in de externe repository, daarna heb ik alle mappen hernoemd naar de oorspronkelijke naam met de kleine letter (zoals abc) en het kostte ze!


Antwoord 7

Voor hoofdlettergevoelig hernoemen, heeft git mv somefolder someFoldereerder voor mij gewerkt, maar vandaag om de een of andere reden niet. Dus als tijdelijke oplossing heb ik een nieuwe map tempgemaakt, alle inhoud van someFolderverplaatst naar temp, someFolderverwijderd , de tempvastgelegd, vervolgens someFoldergemaakt, alle inhoud van tempverplaatst naar someFolder, temp, vastgelegd en gepusht someFolderen het werkte! Wordt weergegeven als someFolderin git.


Antwoord 8

Gewoon de naam van de map wijzigen. git is een “content-tracker”, dus de SHA1-hashes zijn hetzelfde en git weet dat je het hernoemt. Het enige dat verandert is het boom-object.

rm <directory>
git add .
git commit

Other episodes