Mea .gitignore dosarul lui pare să fie ignorat de Git - ar putea
.gitignore` fișierul să fie corupt? Care format de fișier, locale sau cultura face Git aștepta?
Mea .gitignore
:
# This is a comment
debug.log
nbproject/
De ieșire din starea git`:
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# debug.log
# nbproject/
nothing added to commit but untracked files present (use "git add" to track)
Mi-ar place debug.jurnal " și " nbproject/
să nu apară în untracked lista de fișiere.
De unde să încep căutarea de a repara acest lucru?
Chiar dacă te-ai't pe senile fișiere de până acum, Git pare a fi capabil de a "stiu" despre ele, chiar și după ce le adăugați la .gitignore
.
NOTĂ: în Primul rând comite modificările actuale, sau le va pierde.
Apoi rulați următoarele comenzi din partea de sus folder de depozit Git:
git rm -r --cached .
git add .
git commit -m "fixed untracked files"
Dacă ți se pare că Git e't să observe modificările făcute la ta `.gitignore dosarul lui, s-ar putea să doriți să verificați următoarele puncte:
.gitignore
de fișier, care ar putea interfera cu unul localgit add [neangajate schimbări doriți să păstrați] && git commit git rm -r --cache . git add . git commit -m "fix untracked fișiere"
git add-f [fișierele pe care doriți să urmăriți din nou] git commit -m "Refresh eliminarea fișiere .gitignore fișier."
// De exemplu, dacă doriți .java tip de fișier pentru a fi urmărite din nou, // Comanda ar trebui să fie: // git add-f *.java
Fix. OK, am creat .gitignore fișierul în Notepad în Windows și nu a fost't de lucru. Când am privit .gitignore fișier de pe Linux părea organizate păsărească - poate Notepad a scris Unicode, mai degrabă decât ASCII sau orice 8-bit este.
Așa că am rescris de fișiere pe Linux box, și când am tras-o înapoi în Windows funcționează bine! Ura!
Fără să mai adăugăm o comite la proiect, o linie va fi suficient pentru a face `.gitignore de lucru așa cum ar trebui să:
git rm -r --cached debug.log nbproject
Acest lucru le va elimina din depozit, dar încă mai păstrează-le fizic. În limba engleză, se șterge orice istorie de modificări legate de ele, și, de asemenea, nu va urmări schimbarea lor în orice viitoare a comis-o. S-ar putea găsi o explicație mai bună aici.
O altă cauză a acestei probleme este de spații libere sau file înainte de declarație:
Exemplu:
# Be aware of the following:
notWorkingIgnore.*
workingIgnore.*
Și după cum a subliniat de comentariu de mai jos un spațiu la final poate fi o problemă la fel de bine:
# Be aware of the following:
notWorkingIgnore.* #<-Space
workingIgnore.*#<-Nospace
Ca și cu alte soluții, comite prima și de a fi conștienți de faptul că veți pierde nici un-angajat modificări.
Am avut rezultate mai bune cu aceasta:
git rm -r --cached .
git reset HEAD --hard
git status
Rețineți că statutul ar trebui't au orice fișiere modificate acum.
Am observat că codificarea .gitignore
avea un efect ... dacă fișierul a fost Unicode, acesta a fost ignorat, dacă a fost ASCII, nu a fost't.
Proces:
PS> git status
.gitignore
's codare: PS> Du-FileEncoding .gitignore
PS> Set-de Conținut .gitignore -Codificarea Ascii -Valoare (Get-Content .gitignore)
PS> git status
În cazul meu, a's, deoarece fișierele deja existente în depozit și am'm încercat să-l ignore.
Acestea sunt lucrurile pe care am făcut-o pentru a rezolva problema:
De atunci, orice modificare pe care am facut aceste fișiere au fost ignorate.
Cred că poți't ignora fișierele care există deja pe repository.
Toate raspunsurile de aici sunt de fapt soluții. Ai nevoie pentru a crea .gitignore fișier înainte de a alerga git init
. În caz contrar, git
nu va ști niciodată ce trebuie să ignore aceste fișiere, deoarece acestea au fost urmărite deja.
echo .idea/ >> .gitignore
git init
Dacă vă dezvolta pe o bază de zi cu zi, te sfătuiesc să adăugați obișnuită ignorat fișiere la ~/.gitignore_global
de fișier. Așa, git
va ști deja care fișierele (ceea ce înseamnă "dvs. de utilizator", deoarece's un fișier în directorul tau de casa), de obicei ignora.
Special pentru utilizatorii de Windows: Dacă aveți untracked fișiere și de compensare/eliminarea fișierele stocate în memoria cache nu este de lucru. Încercați să deschideți PowerShell și de conversie .gitignore fișier UTF-8 codificare:
PowerShell $Myfile = Get-Conținut .\.gitignore` $Myfile | Out-File-Codare "UTF8" .gitignore
Aveți nevoie pentru a face asta o singura data pentru a codifica .gitignore fișier pentru acel director, și deoarece fișierul este apoi codificat corect, ori de câte ori vă editați fișierul în viitor ar trebui să funcționeze. Cred că acest lucru se datorează o problemă cu GitHub nu sunt pe cale de a citi non codificarea UTF-8 pentru un .gitignore fișier. Cât de departe am'm conștienți de această problemă nu a fost încă rezolvată pentru Windows. L's nu prea mare lucru, doar o durere de depanare atunci când l's nu funcționează.
Nu's o altă problemă cu care .gitignore care s-ar putea întâmpla, mai ales pentru un utilizator Windows. Git nu-i place când îl nume
.gitignore(cum ar fi
unitate.gitignore`).
Te'll să-l nume .gitignore
, sau pe Windows, .gitignore.
ca Windows crede că sunteți încercarea de a redenumi fără un nume de fișier.
Am întâlnit această problemă. Conținutul în interiorul meu .gitignore fișier a continuat să apară în lista de untracked fișiere.
Am fost folosind acest lucru pentru a crea fișier ignore:
echo "node_modules" > .gitignore
Se pare că dubla citate au fost cauzează problema pentru mine. Am eliminat fișierul și apoi folosite la comanda din nou fără ghilimele, și a mers cum era de așteptat. Nu este nevoie să te pui cu codare fișier. Am'm pe un Windows 10 mașină folosind Cmder.
Exemplu:
echo node_modules > .gitignore
Pentru mine nici unul din răspunsurile precedente a lucrat. Am avut de a copia .gitignore
text în exclude.txt dosarul lui a fost găsit la
<Your-project-folder>\.git\info
Odată ce ați făcut, refresh modificările și toate untracked fișierele sunt plecat. Comite, ca de obicei.
Problema mea a fost (ca OPERAȚIUNE a sugerat) un corupt .gitignore fișier. Am't cred că a fost și a ignorat posibilitatea, până când orice altceva a esuat. Corupția am't apar în "vi", dar au fost doi octeți de la începutul fișierului care a cauzat .gitignore fișier pentru a fi ignorat. Pentru mine, aceste numai a apărut atunci când am scris cat .gitignore
, care a arătat:
��# Built application files
*.apk
*.ap_
# ...
Nu am nici o idee cum au ajuns acolo, dar a recrea fișierul rezolvat problema. Un hex analiza fișier corupt a arătat următoarele:
user@dev ~/project/myproject $ xxd -b .gitignore
00000000: 11111111 11111110 00100011 00000000 00100000 00000000 ..#. .
00000006: 01000010 00000000 01110101 00000000 01101001 00000000 B.u.i.
Eu am avut problema asta, cu un .gitignore fișier care conține această linie:
lib/ext/
Tocmai am realizat că, de fapt, acest director este un link simbolic într-un dosar în altă parte:
ls -la lib/ext/
lrwxr-xr-x 1 roipoussiere users 47 Feb 6 14:16 lib/ext -> /home/roipoussiere/real/path/to/the/lib
Pe linia lib/ext/
, Git, de fapt, se pare pentru o dosar, dar o legătură simbolică este o fișier mea " lib " dosarul nu este de ignorat.
L-am reparat prin înlocuirea lib/ext/ " cu " lib/ext
meu .gitignore fișier.
Am avut aceeasi problema. Eu cred că problema a fost un CR vs CR+LF discrepanță. Am ascuns lucruri în viața mea .gitignore folosind CMD (pe Windows 7) și următoarea comandă:
Rău:
echo "file_to_be_ignored.py" >> .gitignore<br>
echo "*~" >> .gitignore
Etc.
Problema a fost că această comandă nu are loc corect end-of-line marker pentru Git să recunoască newline (fie CR sau CR+LF când Git se așteaptă ca cealaltă). Am rezolvat problema de manual înlocuind fiecare newline în Vim (Vim la salvare!) si a functionat perfect.
Bucurați-vă de .gitignore în Notepad++ sau Vim (în mod ideal). Chiar dacă fișierul se pare ca's formatat corect, încercați să înlocuiți liniile. Sună ciudat, știu, dar ea a lucrat pentru mine. :D
OK, deci in cazul meu a acceptat soluția nu au de lucru, și ceea ce a lucrat este descris aici:
Este Visual Studio 2013 ignorat .gitignore de fișiere?
Pe scurt:
ms-persist.xml
Un singur lucru, de asemenea, să se uite la: Sunteți de economisire dumneavoastră .gitignore fișier cu linia corectă finaluri?
Windows:
Daca're folosind-o pe Windows, sunteți de economisire cu Windows capetele de linie? Nu toate programele vor face acest lucru în mod implicit; Notepad++ si multe editoare PHP implicit pentru Linux capetele de linie astfel încât fișierele vor fi server compatibil. O modalitate ușoară de a verifica acest lucru, este de a deschide fișierul în Windows Notepad. Daca tot apare pe o singură linie, apoi s-a salvat fișierul cu Linux capetele de linie.
Linux:
Dacă aveți probleme cu dosarul de lucru într-un mediu Linux, deschideți fișierul într-un editor cum ar fi Emacs sau nano. Dacă vedeți orice caractere non-printabile, apoi s-a salvat fișierul cu Windows capetele de linie.