Failų pavadinimų didžiosios raidės keitimas „Git“

Bandau pervardyti failą, kad galėčiau turėti kitokią kapitalo kopiją nuo to, ką turėjo anksčiau:

 git mv src/collision/b2AABB.js src/collision/B2AABB.js fatal: destination exists, source=src/collision/b2AABB.js, destination=src/collision/B2AABB.js 

Kaip matote, „git“ jį išmeta. Bandžiau pervardyti naudojant tik seną senąją mv komandą, bet „git“ neperveda pervadinimo (kaip pervardyti arba naują failą be pėdsakų).

Kaip galiu pakeisti failą, kad turėtumėte kitą kapitalizaciją, turinčią tą patį pavadinimą? Aš esu Mac OS X 10.7.3 su 1.7.1.1 git, naudojant zsh 4.3.15.

279
09 мая '12 в 23:46 2012-05-09 23:46 KPthunder paklausė 09 gegužės 12 d. 11:46 2012-05-09 23:46
@ 8 atsakymai

„Git 2.0.1“ (2014 m. Birželio 25 d.), „ git mv veiks tik registro neskelbtinoje OS .

Žr. Įsipareigojimą baa37bf david dturner-tw ( dturner-tw )

mv : leisti pervadinti, jei užfiksuojama nejautrių failų sistemoms

git mv hello.txt Hello.txt “ bylos nejautrioje failų sistemoje visada sukelia „ destination already exists “ klaidą, nes šie du pavadinimai priklauso tam pačiam keliui failų sistemoje ir reikalauja naudotojo “ --force “, taisant indekso įrašyto kelio atvejį ir kitame įvykyje.

Nustatykite šį atvejį ir išspręskite ją nereikalaujant „ --force “.

git mv hello.txt Hello.txt tiesiog veikia (nereikia --force ).

274
27 июля '14 в 11:00 2014-07-27 11:00 atsakymą pateikė VonC liepos 27 d. 14 val. 11:00 2014-07-27 11:00

Atsižvelgiant į pirmiau pateiktus atsakymus, galite gauti darbą su viena komanda su „-force“:

border=0
  git mv --force myfile MyFile 
389
18 апр. Atsakymą pateikė Marcello de Sales 18 balandis. 2013-04-18 01:31 '13 ne 1:31 2013-04-18 01:31

Kartais norite pakeisti didelio skaičiaus failų kapitalizaciją operacinėje sistemoje „X X“. Vykdant „ git mv greitai pavargsite, kad būtų šiek tiek lengviau, tai aš darau:

  • Perkelkite visus failus, esančius už katalogo, kad galėtumėte naudoti darbalaukį.
  • Padarykite git add . -A git add . -A ištrinti visus failus.
  • Pervardykite visus darbalaukyje esančius failus į atitinkamą kapitalizaciją.
  • Perkelkite visus failus atgal į pradinį katalogą.
  • Ar git add . „git“ turėtų matyti pervardytus failus.

Dabar galite įsipareigoti nurodydami, kad pakeitėte failo kapitalizaciją.

55
12 мая '14 в 15:46 2014-05-12 15:46 atsakymas pateikiamas p. Hus 12 gegužės 14 d. 15:46 2014-05-12 15:46

Failų pavadinimai pagal OS X nėra didžiosios ir mažosios raidės (numatytasis). Tai yra OS problema, o ne git problema. Jei ištrinate ir vėl pridedate failą, turite gauti tai, ko norite, arba pervadinti jį į kitą, o tada pervadinti jį.

48
09 мая '12 в 23:51 2012-05-09 23:51 atsakymą larsks pateikė gegužės 09 d. 12 d. 23:51 2012-05-09 23:51

Kaip OP apie „Failų vardų didžiosios raidės keitimas„ Git “:

Jei bandote pakeisti projekto „Failo vardo kapitalizaciją“, jums nereikia jėgos, kad jį pervadintumėte iš „git“. IMO, aš norėčiau pakeisti „kapitalizaciją“ iš mano IDE / redaktoriaus ir įsitikinti, kad teisingai nustatysiu „Git“, kad pasiektų renamerą.

Pagal numatytuosius nustatymus „git“ šablonas yra nustatytas ignoruoti atvejį („git“ yra nejautrus atveju). Norėdami užtikrinti, kad numatytasis šablonas būtų naudojamas, --get norimą raktą. Naudokite --global ir --global norite pasakyti git, ar pasirinkti konfigūracijos raktų vertę iš vietinės git repo ar globalinės konfigūracijos. Pvz., Jei norite rasti pasaulinį raktų core.ignorecase :

 git config --global --get core.ignorecase 

Jei tai bus true , įsitikinkite, kad jį nustatysite kaip:

 git config --global core.ignorecase false 

(įsitikinkite, kad turite tinkamus leidimus keisti pasaulį) Ir jūs turite tai, dabar jūsų git nepaisys kapitalizacijos ir laikys juos kaip pakeitimus.

Darant prielaidą, jei dirbate su daugiakalbiais projektais, ir manote, kad ne visi projektai turėtų būti traktuojami kaip jautrūs atvejams, paprasčiausiai atnaujinkite vietinį core.ignorecase

13
16 нояб. atsakymas pateikiamas Segmentuotas lapkričio 16 d. 2015-11-16 12:38 '15, 12:38, 2015-11-16 12:38

Galite atidaryti „.git“ katalogą ir tada redaguoti „config“ failą. Skyriuje "[branduolys]" nustatykite "ignorecase = true" ir baigsite;)

2
14 марта '17 в 10:24 2017-03-14 10:24 Atsakymą pateikė Dejan Dobromirov kovo 17 d., 17 val. 10:24 2017-03-14 10:24

Šis „python“ fragmentas gaus git mv --force visos katalogo rinkmenos, kuriose yra git mv --force raidės, pavyzdžiui: foo / Bar.js taps foo / bar.js per git mv foo/Bar.js foo/bar.js --force

Pakeiskite jį pagal savo norą, tiesiog pagalvokite, ką norėčiau pasidalinti :)

 import os import re searchDir = 'c:/someRepo' exclude = ['.git', 'node_modules','bin'] os.chdir(searchDir) for root, dirs, files in os.walk(searchDir): dirs[:] = [d for d in dirs if d not in exclude] for f in files: if re.match(r'[AZ]', f): fullPath = os.path.join(root, f) fullPathLower = os.path.join(root, f[0].lower() + f[1:]) command = 'git mv --force ' + fullPath + ' ' + fullPathLower print(command) os.system(command) 
1
01 марта '15 в 7:05 2015-03-01 07:05 atsakymas pateikiamas blended kovo 1 d., 15 val. 07:05 2015-03-01 07:05

Konfigūruokite „ git mv failus mažosiomis raidėmis „MacOS“:

 for f in *; do git mv "$f" "`echo $f | tr "[:upper:]" "[:lower:]"`"; done 

Jis įrašys visus aplanke esančius failus.

0
06 дек. atsakymas pateikiamas „ softarn“ 06 dec. 2016-12-06 10:54 '16 at 10:54 2016-12-06 10:54