Gitignore werkt niet

Mijn .gitignore-bestand werkt om de een of andere reden niet, en Google heeft het niet kunnen repareren. Dit is wat ik heb:

*.apk
*.ap_
*.dex
*.class
**/bin/
**/gen/
.gradle/
build/
local.properties
**/proguard/
*.log

Het staat in de directory master, wat mijn git repo is. Ik gebruik Git 1.8.4.2 omdat ik een MacBook heb met OSX 10.8.6.


Antwoord 1, autoriteit 100%

De bestanden/map in je versiebeheer zullen zichzelf niet alleen verwijderen omdat je ze hebt toegevoegd aan de .gitignore. Ze staan al in de repository en je moet ze verwijderen. Je kunt dat gewoon hiermee doen:

Vergeet niet om alles wat je hebt veranderd vast te leggen voordat je dit doet!

git rm -rf --cached .
git add .

Hiermee worden alle bestanden uit de repository verwijderd en weer toegevoegd (dit keer met inachtneming van de regels in uw .gitignore).


Antwoord 2, autoriteit 17%

Om een enkel bestand dat al aan uw repository is toegevoegd/geïnitialiseerd, ongedaan te maken, dwz stop het volgen van het bestand maar verwijder het niet uit uw systeem, gebruik: git rm --cached filename

Om elk bestand dat zich nu in uw .gitignorebevindt te verwijderen:

Bevestig eerst eventuele openstaande codewijzigingen en voer vervolgens deze opdracht uit:

git rm -r --cached .

Hiermee worden alle gewijzigde bestanden uit de index (staging-gebied) verwijderd en voert u het volgende uit:

git add .

Beloof het:

git commit -m ".gitignore is now working"

Antwoord 3, autoriteit 3%

Na een beetje door een konijnenhol te zijn gegaan om de antwoorden op deze vraag te volgen (misschien omdat ik dit moest doen in een visueel studioproject), ontdekte ik dat de gemakkelijkere weg was om

  1. Knip en plak de bestanden die ik niet langer wil volgen op een tijdelijke locatie

  2. De “verwijdering” van die bestanden uitvoeren

  3. Voer een wijziging door van de .gitignoreom de bestanden uit te sluiten die ik tijdelijk had verplaatst

  4. Verplaats de bestanden terug naar de map.

Ik vond dit de meest ongecompliceerde manier om dit aan te pakken (tenminste in een visuele studio, of ik zou aannemen dat een andere op IDE-heave gebaseerde omgeving zoals Android Studio), zonder mezelf per ongeluk in de voet te schieten met een behoorlijk doordringende git rm -rf --cached ., waarna het visual studio-project waar ik aan werkte niet laadde.


Antwoord 4, autoriteit 2%

@Ahmad’s antwoord werkt, maar als je gewoon 1 specifiek bestand of een paar bestanden wilt negeren, doe dan wat @Nicolas suggereert

Stap 1

bestandsnaam toevoegen aan .gitignore-bestand

Stap 2

[verwijder bestandsnaam (bestandspad) uit git cache

git rm --cached filename

Stap 3

wijzigingen doorvoeren
git add filename

git commit -m "add filename to .gitignore"

Het houdt je git-geschiedenis schoon, want als je git rm -r --cached .doet en alles weer toevoegt en vastlegt ze zullen je git-geschiedenis vervuilen (het zal laten zien dat je veel bestanden toevoegt in één commit) niet zeker of ik mijn gedachte goed uitdruk, maar ik hoop dat je het punt begrijpt


Antwoord 5

In mijn geval was het een lege ruimte aan het begin van het bestanddie duidelijk zichtbaar werd toen ik het bestand opende in Kladblok, niet duidelijk in Visual Studio Code.


Antwoord 6

Ik heb iets gebruikt om een algemene .gitignorevoor mij te genereren en ik kwam dit tegen. Na het lezen van @Ozesh-antwoord heb ik in VS Code geopend omdat het een mooie indicator rechtsonder heeft die het type regeleinde laat zien. Het was LF, dus ik heb geconverteerd naar CRLF zoals voorgesteld, maar geen dobbelstenen.

Toen keek ik naast de regeleinden en zag dat deze was opgeslagen met UTF16. Dus ik heb opnieuw opgeslagen met UTF8-codering en voila, het werkte. Ik dacht dat de CRLF er niet toe deed, dus veranderde ik hem voor de zekerheid terug naar LF en hij werkte nog steeds.

Natuurlijk was dit geen probleem met OP’s, aangezien hij de bestanden al had vastgelegd, dus ze waren al geïndexeerd, maar ik dacht ik deel het voor het geval iemand anders dit tegenkomt.

TLDR; Als je de bestanden nog niet hebt gecommit en .gitignore nog steeds niet wordt gerespecteerd, controleer dan de bestandscodering en zorg ervoor dat het UTF8 is en als dat niet werkt, probeer dan misschien te knoeien met regeleindes.


Antwoord 7

Ik had echo node_modules >> .gitignoreen het werkte niet.

om de een of andere reden slaat de terminal van vscodehet bestand op in UCS-2 LE BOMen git lijkt dat niet te accepteren.

Ik heb het bestand geopend en geconverteerd naar UTF-8met behulp van Notepad++

Het werkt nu.

Ik denk dat ze dit moeten oplossen omdat echo "filetoignore" >> .gitignorelijkt eigenlijk handig om te doen


Antwoord 8

In mijn geval waren spaties aan het einde van de regels van .gitignore de oorzaak. Pas dus op voor spaties in de .gitignore!


Antwoord 9

Ik heb mijn probleem als volgt opgelost:

Allereerst ben ik een Windows-gebruiker, maar ik heb een soortgelijk probleem gehad. Dus plaats ik mijn oplossing hier.

Er is een simpele reden waarom de .gitignore soms niet werkt zoals het hoort. Dit komt door het EOL-conversiegedrag.

Hier is een snelle oplossing voor

Bewerken > EOL-conversie > Windows-indeling > Opslaan

Je kunt de instellingen van je teksteditor daarvoor de schuld geven.

Bijvoorbeeld:

Omdat ik een Windows-ontwikkelaar ben, gebruik ik meestal Notepad++voor het bewerken van mijn tekst, in tegenstelling tot Vim-gebruikers.

Dus wat er gebeurt, is dat wanneer ik mijn .gitignore-bestand open met Notepad++, het er ongeveer zo uitziet:

## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# See https://help.github.com/ignore-files/ for more about ignoring files.
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
*.dll
*.force
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs

Als ik hetzelfde bestand open met het standaard Kladblok, krijg ik dit

## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. ## ## Get latest from  https://github.com/github/gitignore/blob/master/VisualStudio.gitignore # See https://help.github.com/ignore-files/ for more about ignoring files. # User-specific files *.suo *.user *.userosscache 

Dus je hebt het misschien al geraden door naar de uitvoer te kijken. Alles in de .gitignore is een one-liner geworden, en aangezien er een ## in het begin staat, doet het alsof alles is becommentarieerd.

De manier om dit op te lossen is eenvoudig:
Open gewoon je .gitignore-bestand met Notepad++ en doe het volgende

Bewerken > EOL-conversie > Windows-indeling > Opslaan

De volgende keer dat u hetzelfde bestand opent met het standaard Windows-kladblok, moet alles correct zijn geformatteerd. Probeer het en kijk of dit voor u werkt.


Antwoord 10

Ook opmerkingen moeten op hun eigen regel staan. Ze kunnen niet achter een vermelding worden geplaatst. Dit werkt dus niet:

/node_modules  # DON'T COMMENT HERE (since nullifies entire line)

Maar dit zal werken:

# fine to comment here
/node_modules

Antwoord 11

Mijn stukje toevoegen omdat dit een populaire vraag is.

Ik kon de .history-map niet in .gitignore plaatsen, want welke combo ik ook probeerde, het werkte gewoon niet. Windows blijft nieuwe bestanden genereren bij elke opslag en ik wil deze helemaal niet zien.

Maar toen realiseerde ik me dat dit gewoon mijn persoonlijke ontwikkelomgeving op mijn computer is. Dingen zoals .history of .vscode zijn specifiek voor mij, dus het zou raar zijn als iedereen zijn eigen .gitignore-items zou opnemen op basis van welke IDE of welk besturingssysteem ze gebruiken.

Dus dit werkte voor mij, voeg gewoon “.history” toe aan .git/info/exclude

echo ".history" >> .git/info/exclude

Antwoord 12

Mijn probleem was dat ik voor het eerst had gemaakt .Gitignore op een Mac, maar werkte nu aan een Windows-machine. Op Macs gebruikt u “/” in uw bestandspad. Op Windows gebruikt u “\”.

Dus voor mijn .gitignore-bestand om te werken, was ik consistent in welk symbool dat ik heb gebruikt. In dit geval moest ik “/” gebruiken voor elk bestandspad dat ik wilde toevoegen, ook al was toen toen het is gekopieerd als dit: “File \ Path”.

Verloren meerdere uren rond deze dwaasheid (het heeft me echt lastig gevallen).


13

In mijn geval

Ik heb git-bash gebruikt en schrijf deze opdracht:

echo [Enter_your_file_name.extension] >> .gitignore

Voer vervolgens Push In Repo en werkt prima


14

Er zijn veel antwoorden op de Stackoverflow, maar wat voor mij werkte, is niet helemaal in een bepaalde, ik schrijf alle stappen één voor één die hier op een eenvoudige manier moet worden gedaan:

Pre — Neem een ​​back-up van Repo voor het geval. (Ik heb het niet anders gemaakt, voel je je veiliger)

  1. Zorg ervoor of dit uw eerste commit of eerdere deze bestanden is
    waren toevoegen en zijn dus in de cache geworden.
  2. Zo ja, dan git rm -r
    – beklede. en git toevoegen. (Mis de punt niet)
  3. Als het nog steeds niet werkt, open het bestand in Kladblok

Ga naar bestand – & GT; Opslaan als
Verander de codering naar ANSI. (Sommige antwoorden zeggen ten onrechte UTF-8, maar het
werkt niet en verspilt tijd onnodig)

Again git rm -r --cached .
    and git add . (do not miss the dot) 
Now do Git status and verify
    what we wanted has happened

15

In CMD-venster Gebruik hieronder GIT-opdracht,

git rm --cached filename

uitleg:

git-rm– Verwijder bestanden uit de werkboom en uit de index

--cached
Gebruik deze optie om alleen paden uit de index te unstagen en te verwijderen. Werkboombestanden, al dan niet gewijzigd, worden met rust gelaten.

–from https://git-scm.com/docs/git-rm


Antwoord 16

Iemand vindt dit misschien handig. Het probleem voor mij was het formaat. Om de een of andere reden, en zonder wijzigingen aan te brengen, hield git niet van het formaat van de inhoud van het bestand.
Directory’s in de .gitignorewaren als volgt:

directory1/*
directory2/*
directory3/*

Toen ik het formaat veranderde in

directory1/
directory2/
directory3/

de mappen werden opnieuw genegeerd en het enige dat ik moest toevoegen/commit/push was de .gitignore.

Other episodes