Více na
.gitignore a "Následující nesledované soubory pracovního stromu by byly přepsány checkoutem"
Proto jsem do souboru .gitignore přidal složku.
Jakmile provedu git status
, píše mi to.
# On branch latest
nothing to commit (working directory clean)
Když se však pokusím změnit větve, zobrazí se mi následující hlášení:
My-MacBook-Pro:webapp marcamillion$ git checkout develop
error: The following untracked working tree files would be overwritten by checkout:
public/system/images/9/thumb/red-stripe.jpg
public/system/images/9/original/red-stripe.jpg
public/system/images/8/thumb/red-stripe-red.jpg
public/system/images/8/original/red-stripe-red.jpg
public/system/images/8/original/00-louis_c.k.-chewed_up-cover-2008.jpg
public/system/images/7/thumb/red-stripe-dark.jpg
public/system/images/7/original/red-stripe-dark.jpg
public/system/images/7/original/DSC07833.JPG
public/system/images/6/thumb/red-stripe-bw.jpg
public/system/images/6/original/website-logo.png
public/system/images/6/original/red-stripe-bw.jpg
public/system/images/5/thumb/Guy_Waving_Jamaican_Flag.jpg
public/system/images/5/original/logocompv-colored-squares-100px.png
public/system/images/5/original/Guy_Waving_Jamaican_Flag.jpg
public/system/images/4/thumb/DSC_0001.JPG
public/system/images/4/original/logo.png
public/system/images/4/original/DSC_0001.JPG
public/system/images/4/original/2-up.jpg
public/system/images/3/thumb/logo2.gif
public/system/images/3/original/logo2.gif
public/system/images/3/original/Guy_Waving_Jamaican_Flag.jpg
public/system/images/3/original/11002000962.jpg
public/system/images/2/thumb/Profile Pic.jpg
public/system/images/2/original/Profile Pic.jpg
public/system/images/2/original/02 Login Screen.jpg
public/system/images/1/original/Argentina-2010-World-Cup.jpg
Please move or remove them before you can switch branches.
Aborting
Takto vypadá můj soubor .gitignore:
.bundle
.DS_Store
db/*.sqlite3
log/*.log
tmp/**/*
public/system/images/*
public/system/avatars/*
Jak to mám zprovoznit, abych mohl přepínat větve bez mazání těchto souborů?
Pokud provedu změnu, ovlivní to tyto soubory? Jinými slovy, kdybych se poté vrátil do této větve, bylo by vše perfektní jako do mé poslední revize?
Nechci o ty soubory přijít, jen je nechci sledovat.
788
3
UPOZORNĚNÍ: odstraní nesledované soubory, takže to není dobrá odpověď na položenou otázku.
Na tuto zprávu jsem narazil také. V mém případě jsem soubory nechtěl'zachovat, takže mi to fungovalo:
git 2.11 a novější
starší git
Pokud chcete také odstranit soubory, které git ignoruje, spusťte následující příkaz.
VARUJEME VÁS!!! TENTO PŘÍKAZ S NEJVĚTŠÍ PRAVDĚPODOBNOSTÍ ZNIČÍ VÁŠ PROJEKT, POUŽÍVEJTE JEJ POUZE V PŘÍPADĚ, ŽE NA 100% VÍTE, CO DĚLÁTE
git 2.11 a novější
starší git
http://www.kernel.org/pub/software/scm/git/docs/git-clean.html
-x
znamená, že se odstraní také ignorované soubory a soubory, které git nezná.-d
znamená, že kromě nesledovaných souborů se odstraní i nesledované adresáře.-f
je vyžadováno pro vynucení spuštění.Vypadá to, že chcete soubory ignorovat, ale již byly odevzdány. .gitignore nemá žádný vliv na soubory, které jsou již v repozitáři, takže je třeba je odstranit pomocí
git rm --cached
. Příkaz--cached
zabrání tomu, aby měl nějaký vliv na pracovní kopii, a při příštím odevzdání se pouze označí jako odstraněný. Po odstranění souborů z repozitáře pak příkaz .gitignore zabrání jejich opětovnému přidání.Ale máte jiný problém s vaším .gitignore, nadměrně používáte zástupné znaky a to způsobuje, že odpovídá méně, než očekáváte. Místo toho změňme .gitignore a zkusme toto.
Git vám říká, že chce vytvořit soubory (pojmenované
public/system/images/9/...
atd.), ale v tomto adresáři již máte existující soubory, které Git nesleduje. Možná tyto soubory do úložiště Git přidal někdo jiný a vy jste se na tuto větev přepnuli poprvé?Pravděpodobně existuje nějaký důvod, proč jsou tyto soubory ve větvi
develop
, ale ne ve vaší aktuální větvi. Možná se budete muset zeptat svých spolupracovníků, proč tomu tak je.Nemůžete to'udělat, aniž by soubory nějak zmizely. Mohl bys prozatím přejmenovat
public
namy_public
nebo něco podobného.Pokud odevzdáte své změny, Git je neztratí. Pokud své změny neodevzdáte, Git se bude opravdu hodně snažit nepřepsat práci, kterou jste udělali. To je to, před čím vás Git varuje v prvním případě (když jste se pokusili přepnout větve).