Joten lisäsin kansion .gitignore-tiedostooni.
Kun teen git status
-toiminnon, se kertoo minulle, että
# On branch latest
nothing to commit (working directory clean)
Kuitenkin kun yritän vaihtaa haaraa, saan seuraavan tuloksen:
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
Tältä näyttää .gitignore-tiedostoni:
.bundle
.DS_Store
db/*.sqlite3
log/*.log
tmp/**/*
public/system/images/*
public/system/avatars/*
Miten saan tämän toimimaan niin, että voin vaihtaa haaraa poistamatta näitä tiedostoja?
Jos teen muutoksen, vaikuttaako se näihin tiedostoihin? Toisin sanoen, jos palaisin tämän jälkeen takaisin tähän haaraan, olisiko kaikki täydellistä viimeisimpään toimitukseeni asti?
En halua menettää näitä tiedostoja, en vain halua, että niitä seurataan.
Osuin myös tähän viestiin. Minun tapauksessani en halunnut pitää tiedostoja, joten tämä toimi minulle:
git clean -d -f .
git clean -d -f ""
Jos haluat myös poistaa tiedostot, jotka git ei huomioi, suorita seuraava komento.
git clean -d -fx .
git clean -d -fx ""
http://www.kernel.org/pub/software/scm/git/docs/git-clean.html
-x
tarkoittaa, että myös huomiotta jätetyt tiedostot poistetaan, samoin kuin gitille tuntemattomat tiedostot.
-d
tarkoittaa, että jäljittämättömien tiedostojen lisäksi poistetaan myös jäljittämättömät hakemistot.
-f
tarvitaan pakottamaan se suorittamaan.
Näyttää siltä, että haluat, että tiedostot jätetään huomiotta, mutta ne on jo siirretty. .gitignore ei vaikuta tiedostoihin, jotka ovat jo repossa, joten ne on poistettava komennolla git rm --cached
. ---cached
estää sitä vaikuttamasta työkopioosi ja se vain merkitään poistetuksi, kun seuraavan kerran toimitat tiedoston. Kun tiedostot on poistettu reposta, .gitignore estää niiden lisäämisen uudelleen.
Mutta sinulla on toinenkin ongelma .gitignoren kanssa, käytät liikaa jokerimerkkejä ja se aiheuttaa sen, että se vastaa vähemmän kuin odotat sen vastaavan. Sen sijaan vaihdetaan .gitignore ja kokeillaan tätä.
.bundle
.DS_Store
db/*.sqlite3
log/*.log
tmp/
public/system/images/
public/system/avatars/
Git kertoo sinulle, että se haluaa luoda tiedostoja (nimellä public/system/images/9/...
jne.), mutta sinulla on jo olemassa olevia tiedostoja kyseisessä hakemistossa, joita Git ei ole seurannut. Ehkä joku muu on lisännyt nuo tiedostot Git-arkistoon, ja tämä on ensimmäinen kerta, kun olet siirtynyt kyseiseen haaraan?
On luultavasti jokin syy, miksi nuo tiedostot ovat develop
-haarassasi mutta eivät nykyisessä haarassasi. Sinun on ehkä kysyttävä yhteistyökumppaneiltasi, miksi näin on.
miten saan tämän toimimaan, jotta voin vaihtaa haaraa poistamatta näitä tiedostoja?
Se ei onnistu ilman, että tiedostot katoavat jotenkin. Voisit nimetä public
uudelleen my_public
tai joksikin muuksi toistaiseksi.
jos palaisin jälkeenpäin tähän haaraan, olisiko kaikki täydellistä viimeisimpään toimitukseeni asti?
Jos toimitat muutokset, Git ei menetä niitä. Jos et tee muutoksia, Git yrittää todella kovasti ei korvata tekemääsi työtä. Siitä Git varoittaa sinua tässä ensimmäisessä tapauksessa (kun yritit vaihtaa haaraa).