2016-02-16 10 views
5

Ich verwende die neueste Version von Github Desktop. Mein Repo besteht aus einer ziemlich großen C# -Lösung mit vielen Unterverzeichnissen und Projekten. Ich möchte alle R # -Cache-Dateien und kompilierten Binärdateien mithilfe der .gitigore-Datei ignorieren, die sich im Stammverzeichnis des lokalen Repo-Verzeichnisses befindet. Es gibt keine anderen gitignores in diesem Repo und keine in übergeordneten Verzeichnissen. Mein aktueller gitignore ist dies:gitignore vermisst einige Binärdateien (DLLs & PEs)

*.suo 
*.user 
_ReSharper.* 
bin 
obj 
packages 
*.cache 
*.pdb 
*.dll 
*.exe 
*.xml 

Wenn ich meine Änderungen vorgenommen haben, neu kompiliert und getestet alles, öffne ich Github-Desktop. Es fängt fast alle Dateien, die nur einige.dll s ignoriert werden sollte, .pdb s und .exe s werden nicht ignoriert und immer zeigen, wie geändert:

img

Nun gibt es viel mehr binäre Dateien in Dieses Repo. Nur die spezifischen in der screengrab werden vermisst.

Ist das reparierbar, und/oder kann der gitignore geändert werden, um alle Dateien zu fangen, die er fangen sollte? das Repository

  • entfernt und manuell neu erstellt die gitignore
  • rechte Klick-> Ignorieren von Dateierweiterung aus der GitHub Desktop-

    • entfernt und erneut geklont:

      Hier ist, was ich versuchte, Klient. Das funktioniert nicht, schlimmer noch, es schafft Masken im gitignore

    • Geprüft nach kollidiere gitignore die in Verzeichnissen zugänglich Github Desktop-Duplikat
  • +0

    "scheinen zufällig zu sein" - wirklich? Können Sie ein minimales Beispiel extrahieren? Ohne eine Möglichkeit, dies zu reproduzieren, ist Ihre Frage nicht zu verantworten. Das heißt, es gibt hier nicht einmal eine Programmierfrage, also ist Ihre Frage grundsätzlich nicht Thema. –

    +0

    @UlrichEckhardt Der "zufällige" Teil ist nicht mehr der Fall. Nach dem erneuten Klonen des Repos ist es nun immer gleich (im Screenshot dargestellt). Über die On-Topic-Ness, Fragen zu ['Software-Tools, die häufig von Programmierern verwendet werden] (http://stackoverflow.com/help/on-topic) sind hier völlig in Ordnung. –

    +1

    Sind diese Dateien bereits im Repo? '.gitignore' verhindert nur, dass neue Dateien hinzugefügt werden, es verhindert nicht, dass Updates in bereits vorhandenen Dateien nachverfolgt werden. Versuchen Sie 'git clone' in einen brandneuen Ordner und sehen Sie, ob die DLL-Dateien vorhanden sind – Daenyth

    Antwort

    1

    Vielleicht haben Sie Dateien, die bereits von git verfolgt wurden, bevor Sie die modifizierte .gitignore? Diese Dateien (zumindest in Git 1.9.1) werden nicht ignoriert, wenn sie zu einem .gitignore hinzugefügt werden.

    Zum Beispiel habe ich ein „test“ im Stammverzeichnis Datei einen meiner repos und eine Datei in ihr:

    mkdir test 
    echo "abc" > test/x.txt 
    

    ich hinzu, engagiert und schob ihn. Dann bearbeitet ich .gitignore an der Wurzel und hinzugefügt, um diese Zeile:

    x.txt 
    

    Ich habe auch bearbeitet zu testen/x.txt und fügte hinzu, eine neue Datei:

    echo "123" >> test/x.txt 
    mkdir test2 
    echo "xyz" > test2/x.txt 
    

    Wenn ich jetzt „git laufen Status:“ich sehe:

    modified: .gitignore 
    modified: test/x.txt 
    

    So test2/x.txt richtig ignoriert wird, aber Test/x.txt noch verfolgt wird.

    Um zu erzwingen, dass die Datei ignoriert wird, können Sie sie löschen, & hinzufügen, die Löschung zusammen mit der Änderung .gitignore festschreiben und die Datei wiederherstellen.

    +0

    Ich löschte sowohl das Remote- als auch das lokale Repository (nachdem ich die Dateien manuell von github heruntergeladen hatte) und erstellte einen neuen Repo neu. Ich habe auch überprüft, dass keine Dateien vorhanden sind, die zu meinem Gitignore passen. So habe ich es in meinem Fall gelöst. Danke für die Tipps - es wird eine nette Referenz für jeden mit ähnlichen Problemen sein. –

    Verwandte Themen