„Gitignore“ ir „Toliau neištrinami darbinio medžio failai bus perrašyti ištraukiant“

Taigi, įtraukiau aplanką į .gitignore failą.

Kai tik aš git status , jis man sako

 # On branch latest nothing to commit (working directory clean) 

Tačiau, kai bandau pakeisti filialus, gaunu:

 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 

Štai kaip atrodo .gitignore failas:

 .bundle .DS_Store db* public/system/images/* public/system/avatars/* 

Kaip gauti šį darbą, kad galėčiau perjungti filialus, neištrindamas šių failų?

Jei padariau pakeitimus, ar tai paveiks šiuos failus? Kitaip tariant, jei grįšiu į šią temą, ar viskas būtų tobula, palyginti su mano paskutiniu taisymu?

Nenoriu prarasti šių failų, aš tiesiog nenoriu stebėti.

721
01 февр. marcamillion rinkinys 01 vasaris 2011-02-01 04:39 '11 at 4:39 2011-02-01 04:39
@ 27 atsakymai

Atrodo, kad norite, kad failai būtų ignoruojami, bet jie jau buvo padaryti. .gitignore nepaveikia failų, kurie jau yra repo, todėl juos reikia pašalinti su git rm --cached . --cached neleis jam paveikti jūsų darbo kopijos, ir jis bus tiesiog pažymėtas kaip ištrintas per kitą įvykį. Po failų pašalinimo iš repo, .gitignore neleis jiems vėl pridėti.

Bet jūs turite dar vieną problemą, susijusią su .gitignore, jūs per daug naudojate pakaitos ženklus ir sutinkate, kad jie atitiktų mažiau nei tikitės. Vietoj to, pakeiskite .gitignore ir išbandykite.

 .bundle .DS_Store db/*.sqlite3 log/*.log tmp/ public/system/images/ public/system/avatars/ 
231
01 февр. Atsakymą pateikė Arrowmaster 01 vasaris. 2011-02-01 04:59 '11 at 4:59 2011-02-01 04:59

DĖMESIO: ji ištrins nepažymėtas rinkmenas, todėl tai nėra geriausias atsakymas į pateiktą klausimą.

Aš taip pat pasiekiau šį pranešimą. Mano atveju aš nenorėjau išsaugoti failų, todėl jis dirbo man:

git 2.11 ir naujesnė

 git clean -d -fx . 
border=0

senas gitas

 git clean -d -fx "" 

http://www.kernel.org/pub/software/scm/git/docs/git-clean.html

  • -x reiškia, kad ignoruojami failai taip pat ištrinami, taip pat failai, nežinomi git.

  • -d reiškia, kad be pašalintų failų ištrinami neištrinti katalogai.

  • -f reikalaujama, kad jis veiktų.

891
02 дек. Atsakymą pateikė Scott Schafer, gruodžio 2 d. 2011-12-02 23:38 '11 11:38 val. 2011-12-02 23:38

Įspėjimas: tai pašalins vietinius failus, kurie nėra indeksuojami.

Tiesiog jėga: git checkout -f another-branch

502
11 янв. atsakymą pateikė Régis sausio 11 dieną. 2013-01-11 20:40 '13, 08:40 pm 2013-01-11 20:40

Jei esate OS X, tai gali būti dėl to, kad failo pavadinime yra tam tikrų simbolių. Pabandykite įdiegti šią konfigūravimo parinktį:

 git config core.ignorecase true 
119
30 мая '14 в 20:54 2014-05-30 20:54 atsakymas duotas mattbasta Gegužės 30 d. 14, 20:54 2014-05-30 20:54

„Git“ praneša, kad nori kurti failus (su pavadinimu public/system/images/9/... ir tt), bet jau turite esamus failus šiame kataloge, kurie nėra stebimi „Git“. Gal kas nors pridėjo šiuos failus į „Git“ saugyklą, ir tai yra pirmas kartas, kai persijungėte į šią temą?

Tikriausiai priežastis yra ta, kad jūsų filialo failai develop , bet ne jūsų dabartiniame skyriuje. Jums gali tekti paklausti savo darbuotojų, kodėl taip yra.

Kaip gauti šį darbą, kad galėčiau pakeisti filialus, neištrindamas šių failų?

Jūs negalite to daryti, verčiant failus kažkaip išnykti. Galite pervadinti public my_public arba kažką kitą.

Jei grįžčiau į šį temą, viskas būtų gerai, iki paskutinio įsipareigojimo?

Jei atliksite pakeitimus, „Git“ jų nepraras. Jei nepadarysite pakeitimų, „Git“ stengsis neužrašyti savo darbo. Štai ką Git įspėja apie pirmąjį čia esantį atvejį (kai bandėte perjungti filialus).

41
01 февр. atsakymą pateikė Greg Hewgill 01 vasaris 2011-02-01 04:47 '11 at 4:47 2011-02-01 04:47

Yra šios jautrios užduoties komanda (visam laikui ištrinant nereikalingus failus)

 git clean -i 

Tada git pull .

21
21 сент. Atsakymas, kurį pateikė Abhishek Goel 21 Sep 2016-09-21 11:37 '16 at 11:37 2016-09-21 11:37

Deja, nei git rm --cached , nei git clean -d -fx "" padarė man.

Mano sprendimas paspaudė mano filialą nuotoliniu būdu, klonuodamas naują atpirkimo sandorį ir po to susijungdamas į naują repo. Kiti repo žmonės turėjo padaryti tą patį.

Istorijos moralė: naudokite .gitignore failą nuo pat pradžių.

11
09 янв. Atsakymą pateikė Kyle Clegg 09 Jan 2013-01-09 08:33 '13, 8:33, 2013-01-09 08:33

Jis dirbo man.

  1. git fetch --all 2. git reset --hard origin/{branch_name} 
10
08 янв. Atsakymą pateikė Chamara Jayalath 08 sausis 2018-01-08 15:36 '18, 15:36 pm 2018-01-08 15:36

Tiems, kuriems reikia mažiau rimto, nei Scott Schaffers ,

 git clean -f 

greičiausiai dirbs. Aš labai rekomenduoju paleisti

 git clean --dry-run 

pirmasis. Šioje komandoje bus išvardyti failai, kuriuos „Git“ pašalins, jei paleisite „ git clean -f , ir galėsite išgelbėti jus nuo netyčia ištrinti tai, ko nenorėjote.

Daugiau informacijos apie git clean .

10
14 февр. atsakymą mc_kaiser pateikė vasario 14 d. 2018-02-14 20:29 '18, 8:29 pm 2018-02-14 20:29

Jei norite greitai išspręsti šią problemą, galite naudoti šią komandą:

 git checkout -f dev 
9
24 июня '16 в 10:24 2016-06-24 10:24 atsakymą pateikė „ GeekHades“ birželio 16 d., 10:24 2016-06-24 10:24

Tai atsitiko man Windows 8 sistemoje naudojant Git iš komandinės eilutės. Likusi mano komanda naudoja TFS , ir naudoju „Microsoft“ git -tf, kad stumtumėte / traukite tarp TFS ir vietinio „Git“ saugyklos.

Problema kilo dėl kai kurių failų, kurie buvo pervadinti tik pakeisti savo bylą . Atrodo, kad tai atsitiko:

  • Failai buvo patikrinti kartu su jų pavadinimu.
  • Vėlesniame pataisyme failų pavadinimai buvo pakeisti į visus pavaldinius.
  • git -tf pirmą kartą gavo failus mišriajame byloje.
  • Kai failai buvo pervadinti į mažąsias, git -tf nepriėmė failų, nes „Windows 8“ šie failų pavadinimai yra lygiaverčiai.
  • Kadangi Git yra didžiosios ir mažosios raidės, jis skundėsi, kad turėjau bylų, kurios nekontroliavo šaltinio. Bet su git status nematau jokių pakeitimų, nes „Windows“ komandų eilutėje šie failų pavadinimai yra lygiaverčiai.

Paprasčiausias sprendimas man buvo:

  • git checkout ankstesnė projekto versija seniai, prieš pridedant šiuos failus .
  • Tada git checkout naujausią projekto versiją su teisingu failo korpusu.
8
19 авг. Ryan Lundy atsakymas 19 rug. 2014-08-19 16:25 '14, 16:25 2014-08-19 16:25

Aš turėjau tą pačią problemą, kai patikrinote filialą pagal ankstesnį nustatymą. „Git“ atsisakė patvirtinti dėl neatkuriamų failų.

Radau sprendimą ir tikiuosi, kad tai taip pat padės.

Atrodo, kad nepakanka įtraukti į .gitignore ir išleisti $ git rm -r --cached - juos $ git rm -r --cached į juos.

Tarkime, kad norite padaryti filialą, paremtą ankstesne K fiksacija, norėdami patikrinti kai kuriuos dalykus ir grįžti į dabartinę versiją. Aš tai padarytume taip:

  • Failų nustatymas be pėdsakų: redaguoti .gitignore ir pritaikyti $ git rm -r --cached su failais ir katalogais, kuriuos norite ignoruoti „Git“. Taip pat pridėkite .gitignore failą .gitignore ir nepamirškite išleisti $ git rm -r --cached .gitignore . Tai užtikrins, kad ankstesnio fiksavimo metu „Git“ ignoravimo elgsena išliktų tokia pati.

  • Priimkite atliktus pakeitimus:

    $ git add -A
    $ git commit

  • Išsaugokite dabartinį žurnalą, kitaip gali kilti problemų grįžti į dabartinę versiją.

    $ git log > ../git.log

  • Kietas iš naujo nustatyti K

    $ git reset --hard version_k

  • Sukurkite filialą, pagrįstą K įsipareigojimu

    $ git branch commit_k_branch

  • Įsigykite šią temą

    $ git checkout commit_k_branch

  • Padarykite savo dalykus ir juos ištaisykite

  • Grįžkite į magistro dar kartą

    $ git checkout master

  • Iš naujo nustatykite dabartinę versiją

    $ git reset current_version arba $ git reset ORIG_HEAD

  • Dabar galite iš naujo nustatyti sklandžią galvutę

    git reset --hard HEAD

DĖMESIO! Negalima praleisti kito veiksmo (pvz., Pvz., $ git reset --hard ORIG_HEAD Git $ git reset --hard ORIG_HEAD ), priešingu atveju trūkstami pirmiau išvardyti Git failai bus prarasti.

Taip pat įsitikinau, kad skundžiami „Git“ failai nebuvo ištrinti. Aš nukopijuoju juos į tekstinį failą ir $ for i in $(cat ../test.txt); do ls -ahl $i; done $ for i in $(cat ../test.txt); do ls -ahl $i; done

Jei vėl einate į pirmiau nurodytą filialą, nepamirškite išleisti $ git status kad išvengtumėte nepageidaujamų pakeitimų.

7
05 февр. Atsakymą pateikė Juri Sinitson 05 vasaris. 2012-02-05 20:58 '12, 08:58 pm 2012-02-05 20:58

Mano atveju problema buvo su submoduliais. master buvo sujungtas su kitu filialu, kuris pridėjo naują projektą. Sriegyje, kurį bandžiau išleisti, tai nebuvo, todėl git skundėsi dėl nepažeistų failų, ir nė vienas iš siūlomų sprendimų man nepadėjo. Aš užsakiau savo naują skyrių ir ištraukiau šeimininką.

  • git checkout -f my_branch
  • git pull origin master
  • git submodule update --init
4
23 янв. Bruno Pinheiro atsakymas, pateiktas sausio 23 d 2018-01-23 16:08 '18, 4:08 val. 2018-01-23 16:08

Šios dvi funkcijos (git rm - cached, git checkout -f - kitas filialas) man neveikė.

Vietoj to, aš fiziškai ištrinau failą (užtemdant), kaip sako Git; Perkelkite arba ištrinkite juos, kol galėsite perjungti filialus.

tada pridėkite / pataisykite.

ir tada aš ištraukiau, ir jis dirbo!

3
08 февр. Atsakymas pateikiamas jaunų jaunuolių 08 vasario 8 d. 2017-02-08 19:46 '17, 7:46 pm 2017-02-08 19:46

Aš taip pat patyriau panašią problemą ir bandžiau visus pirmiau minėtus sprendimus, bet neveikiau.

Problema įvyko, kai pervadiname onMusicUpdateListener.java pervadinau savo onMusicUpdateListener.java į onMusicUpdateListener.java .

Dabar master turėjo onMusicUpdateListener.java ir develop tą patį failą kaip onMusicUpdateListener.java

Dabar, kai perėjau į šeimininką, jis man davė klaidą

 The following untracked working tree files would be overwritten by checkout 

ir tada aborted .

Norėdami išspręsti šią problemą, aš checked out master ir tada pervadinsiu „ onMusicUpdateListener.java į „ onMusicUpdateListener.java .

Tada atnaujinome develop šaką, kad merging į master , ir dabar viskas grįžta prie normalaus veikimo ir problema išspręsta.

3
01 сент. atsakymą pateikė Sheraz Ahmad Khilji 01 rugsėjis 2015-09-01 09:47 '15 at 9:47 2015-09-01 09:47

Perkelkite failus, o ne ištrinkite

Vienas iš būdų, kaip išvengti failų pašalinimo, yra juos perkelti. Pavyzdžiui:

 cd "`git rev-parse --show-toplevel`" git checkout 2> | while read f; do [ ! -e "$f" ] || mv "$f" "$f".bak; done 
2
10 марта '17 в 9:16 2017-03-10 09:16 atsakymas pateikiamas gmathtu kovo 10–17 d. 9:16 2017-03-10 09:16

Tai gali būti problemų sprendimas,

keisti nuosavybę

 sudo chown -v -R usr-name:group-name folder-name 
2
24 апр. Laimėjo birželio Bae atsakymą balandžio 24 d 2015-04-24 23:10 '15, 11:10 pm 2015-04-24 23:10

Mano atveju git rm --cached neveikė. Bet aš jį turiu su git rebase

2
14 июня '12 в 16:47 2012-06-14 16:47 atsakymą įteikė Hillkorn birželio 14 d. 12 val. 4:47 2012-06-06 16:47

2 to paties pavadinimo failai, tačiau gali kilti problemų su kitu.

Galite ištrinti vieną iš šių failų arba jį pervardyti. Pavyzdys:

 Pdf.html.twig (The GOOD one) pdf.html.twig (The one I deleted) 
2
10 нояб. Atsakymą pateikė Samuel Vicent 10 lapkričio. 2016-11-10 15:12 '16 at 15:12 2016-11-10 15:12

Jei perkėlėte failą vietoje ir tada pull , bus rodomas šis klaidos pranešimas.

1
23 окт. atsakymas buvo pateiktas lyuboslav kanev spalio 23 d. 2017-10-23 11:50 '17 at 11:50 2017-10-23 11:50

tai lengva išspręsti, git sako, kad turite tuos pačius failus abiejuose filialuose, todėl jūs turite pašalinti tam tikrus failus iš pagrindinio filialo ir tada galite sujungti:

„git“ sujungti „savo filialą“

Tikiuosi, kad tai jums tinka, ką tik padariau klaidą. mano klaida buvo:

klaida: šie nepavykdomi darbo medžio failai bus perrašyti sujungimu: .vs / slnx.sqlite Prieš juos sujungdami, juos perkelkite arba ištrinkite. Nutraukimas

Dabar jis veikia! Mano atveju .vs / slnx.sqlite sukūrė „Visual Studio“, turėjau ją uždaryti prieš ištrinant.

1
28 дек. atsakymas duotas jeirueda gruodžio 28 d. 2017-12-28 21:24 '17 21:24 2017-12-28 21:24

Norėdami išsaugoti modifikuotus failus ir naudoti modifikuotą turinį. Atradau šią klaidą, kai bandau patikrinti filialą ir kai bandau perkelti. Pabandykite git stash

git stash

0
12 нояб. Atsakymas pateikiamas MöĦämëđ ÏbŗäĦïm 12 nov. 2018-11-12 12:47 '18, 12:47 val. 2018-11-12 12:47

Dauguma atsakymų apsvarsto galimybę ištrinti ar ištrinti failus, o tai yra paprastas būdas. Tačiau kartais nenorite atsikratyti vietinių failų. Tačiau susivienykite su strategija, taigi git turi sprendimą;

 git merge --strategy=ours master 
0
02 авг. atsakymas duotas Erdinç Çorbacı 02 rug . 2018-08-02 17:50 '18 at 5:50 pm 2018-08-02 17:50

Aš tiesiog nuėjau į failų sistemą ir ištrinau failą tiesiai, tada tęsiau su „git“ kasa ir ji dirbo.

Kelis kartus susidūriau su problema, ir tai gali būti dėl to, kad kūrėjai atlieka ištrinimą, stumti, pakartotinai pridėti, stumti ar kažką panašaus.

0
14 дек. Phil Carter atsakė į 14 d. 2017-12-14 00:27 '17 ne 0:27 2017-12-14 00:27

Ištrinkite .gitignore failą iš appname / gen /, kad išspręstumėte šią problemą.

0
19 янв. atsakymas pateikiamas vishnuc156 19 sausio. 2016-01-19 12:32 '16 at 12:32 2016-01-19 12:32

Mano atveju, aš pamačiau šią klaidą, nes naudoju populiarią atviro kodo CMS, o problemą sukėlęs katalogas yra atsisiuntimo katalogas, kurį rašo CMS.

Taigi jis sakė, kad yra failų, kurių jūs neturite, bet kurių negalite gauti iš versijos valdymo.

Aš paimsiu visus failus iš tiesioginės svetainės į savo vietinį, tada aš jį patikrinsiu, tikėdamasis, kad jis išspręs problemą.

0
31 окт. Markosaurus spalio 31 d. Atsakymas 2014-10-31 14:12 '14, 14:12, 2014-10-31 14:12

Tiesiog ištrinkite failus arba pervadinkite juos.

Pavyzdžiui

 $ git pull Enter passphrase for key '/c/Users/PC983/.ssh/id_rsa': error: Your local changes to the following files would be overwritten by merge: ajax/productPrice.php Please commit your changes or stash them before you merge. error: The following untracked working tree files would be overwritten by merge: ajax/product.php Please move or remove them before you merge. Aborting Updating a04cbe7a..6aa8ead5 

Turėjau pervardyti / ištrinti ajax / product.php ir ajax / produtPrice.php .

Nesijaudinkite, Git Pull atneš juos atgal. Siūlome pervadinti juos, o ne ištrinti juos, nes galite prarasti kai kuriuos pakeitimus.

Jei tai nepadeda, turite pašalinti visą filialą ir atkurti ją, o tada git pull origin remotebranch

0
29 авг. atsakymas pateikiamas Juodosios 29 d. 2018-08-29 16:23 '18, 16:23 pm 2018-08-29 16:23

Kiti klausimai apie žymas arba Ask a Question