repozytorium git ignorujące wszystkie pliki .dll

88

Tytuł mówi wszystko. Próbuję dodać moje pakiety NuGet do repozytorium. Wykrywane jest wszystko oprócz plików dll.

Plik gitignore nie zawiera żadnych odniesień do * .dll. Pliki .dll nie są rozpoznawane, gdy znajdują się w dowolnym miejscu w całym repozytorium. informacja / wykluczenie również jest pusta.

Sklonowałem również repozytorium (system plików do systemu plików w przeciwieństwie do zdalnego do systemu plików) bez powodzenia. Ten problem występuje również na dwóch różnych komputerach.

Mógłbym ręcznie dodać pliki .dll, ale powinny być śledzone. Dlaczego nie są śledzeni?

Paul Knopf
źródło
26
Co git config --get core.excludesfilemówi?
Antony Hatchkins
2
Generalnie nie jest też dobrym pomysłem używanie git do śledzenia plików binarnych, ponieważ git nie może efektywnie obliczać różnic między wersjami, więc przechowywanie wszystkich wersji będzie stratą, jeśli miejsce. Jeśli biblioteki DLL są generowane w locie, lepiej po prostu zignorować je w git. Jeśli tak nie jest - lepiej użyć innego mechanizmu synchronizacji (np. Rsync).
Antony Hatchkins
Są to pakiety NuGet, które próbuję dodać do git. Nie używam funkcji „Przywracanie pakietu” w programie NuGet, więc potrzebuję, aby cały folder pakietów został wpisany.
Paul Knopf

Odpowiedzi:

121

Czy masz jeden ~/.gitignore_globallub ~/.gitignorew swoim katalogu domowym, który może również zawierać listę tych wzorców plików?

Zobacz https://help.github.com/articles/ignoring-files

Stuart M.
źródło
6
Biorąc pod uwagę, że pracuje z plikami dll, pracuje na platformie Windows, więc ~ oznacza $ HOMEDRIVE $ HOMEPATH pod Windows 7
Antony Hatchkins
9
Okazało się, że to był problem. Nie dodałem jednak tego globalnego pliku ignorowania. Jakiś powód, dla którego wyskoczyłby znikąd? Teraz, kiedy o tym myślę, niedawno zainstalowałem SourceTree (z Atlassian). Może to sprawca?
Paul Knopf
6
Miałem ten sam problem, wcześniej zainstalowałem też SourceTree. Wydaje mi się, że można się domyślić, że SourceTree dodało globalny plik ignorowania, ponieważ działał w przeszłości.
Andreas Krebs
8
Edycja: OK, zostało dodane przez SourceTree link
Andreas Krebs,
31
Musiałem biec, git check-ignoreaby dowiedzieć się, gdzie jest plik. Fond it at ~ / Documents / gitignore_global.txt
Matt Canty
98

Jeśli używasz SourceTree i ustawienia domyślnego, domyślnie ignorujesz wszystkie biblioteki DLL ... Narzędzia => Opcje => Git, a następnie „Edytuj plik” ... dodaj znak „#” przed .dll => „# .dll” .. . Zapisz i zamknij.

Następnie w Eksploratorze Windows w folderze pakietów otwórz terminal GitBash i wpisz „git add”. i pozwól mu działać, z powrotem do SourceTree poczekaj sekundę, a wszystkie brakujące biblioteki DLL pakietów pojawią się, abyś mógł zatwierdzić i wypchnąć.

KevinB
źródło
13
Prawidłowa odpowiedź dla użytkowników SourceTree;)
jmpcm
Wiedziałem o globalnej liście ignorowanych, nie mogłem jej znaleźć w GUI .. Dzięki!
Christoph
Narzędzia => Opcje => Globalna lista ignorowanych Git / Mercurial ... Jeśli jej nie masz, możesz ją tam utworzyć i wskazać.
KevinB
2
Lokalizacja pliku: ~ / Documents / gitignore_global.txt
James McCormack,
To działało w przypadku drzewa źródłowego, ale w przypadku studia wizualnego ignorowanie nie było w moim gitignore. Każde drzewo źródłowe, którego użyłem do tego zadania
Demodave
11

Mógłbym ręcznie dodać pliki .dll, ale powinny być śledzone. Dlaczego nie są śledzeni?

Nie, nie należy ich śledzić, chyba że je dodałeś. Śledzone są tylko pliki, które zostały już dodane i zatwierdzone; to właśnie oznacza „śledzony”.

Spróbuj ręcznie dodać jeden z nich za pośrednictwem, git adda powie Ci, dlaczego je ignoruje, i mimo to poprosi Cię git add -fo dodanie pliku.

meagar
źródło
Zrobiłem "git add '/ packages" i nie wykryłem plików .dll. Następnie użyłem -f i dodał to. Znalazłem jednak problem. „* .dll” znajdował się w moim globalnym ignorowaniu. Nie ma pojęcia, skąd wzięła się ta globalna ignorancja.
Paul Knopf
2

Musisz wyraźnie powiedzieć gitowi, aby śledził nowe pliki.

  1. Uruchom, git add filenameaby dodać plik do indeksu gita.

  2. Uruchom, git commitaby zatwierdzić zmiany w swoim indeksie.

git status Powinien także pokazać listę nieśledzonych plików i katalogów.

Jeśli chcesz wyświetlić wszystkie pliki w repozytorium, które są ignorowane przez gitignore, możesz uruchomić:

git ls-files . --ignored --exclude-standard --others

Jeśli chcesz wyświetlić wszystkie nieśledzone pliki w repozytorium:

git ls-files . --exclude-standard --others
Tuxdude
źródło
2
Musiałem „git dodać -f”, aby śledzić pliki, które w rzeczywistości były ignorowane. Okazało się, że był to wpis w globalnym pliku ignorowania, który jakaś aplikacja umieściła tam dla mnie nieświadomie.
Paul Knopf
2

Miałem podobny problem. Nie mogę dodać pliku .dll z katalogu pakietu do mojego gita, a następnie znalazłem plik gitignore_global.txt, ponieważ sourcetree automatycznie dodało ten plik jako globalne ustawienie ignorowania git. Usunąłem * .dll z pliku gitignore_global.txt i działa dobrze.

Lokalizacja pliku gitignore_global.txt jak poniżej

C: \ Users \ XXXX \ Documents \ gitignore_global.txt lub możesz to znaleźć w sourcetree TOOL => OPTION => zakładka GIT i znajdź globalną listę ignorowanych

Niraj Trivedi
źródło
1

W moim przypadku nie było odwołań do .dll w pliku .gitignore i nie miałem pliku globalnego. Jednak w podkatalogu .git znalazłem plik o nazwie ms-persist.xml. Zamknąłem wszystkie wystąpienia programu Visual Studio, a następnie ręcznie dodałem brakujące pliki dll do tego pliku. Kiedy ponownie otworzyłem Visual Studio, pliki .dll były wyświetlane jako wymagające zarejestrowania. Sprawdziłem je i teraz jestem złoty ...

Curtis
źródło
0

Masz .gitignoregdzieś globalne lub dalsze .gitignorepliki w podkatalogach - względem katalogu głównego projektu.

W systemach Linux i MacOS globalna git-ignore jest najprawdopodobniej w Twoim domu ~/

~/.gitignore_global

W systemie Windows prawdopodobnie znajduje się on w katalogu użytkownika. Albo twój lokalny użytkownik (którego możesz się dowiedzieć, wpisując ECHO %USERPROFILE%lub whoamiw wierszu poleceń.

Jeśli go tam nie ma, to z pewnością .gitconfigjest zamiast tego. Poszukaj w tym miejscu lokalizacji gitignore (np. DocumentsFolderu użytkownika ).

Edycja : użyj, git config --list --show-originaby uzyskać szczegółowe informacje na temat wpływających ustawień git i odpowiadających im lokalizacji plików.

Lorenz Lo Sauer
źródło
0

Wiem, że to pytanie jest bardzo stare, ale dodam dla innych, którzy mogą je odwiedzić w przyszłości. Możesz zmodyfikować swój globalny plik ignorowania zgodnie z powyższymi odpowiedziami, ale wpłynie to na WSZYSTKIE twoje repozytoria git. Jeśli zamiast tego wolisz bardziej szczegółowe podejście, możesz po prostu wykluczyć określone biblioteki DLL lub określone foldery w swoim indywidualnym projekcie .gitignores. Zastępuje to wszystkie ustawienia ignorowania i wymusza wykrywanie i obsługę plików przez git. Myślę, że to lepsze podejście.

.gitignore (dla twojego konkretnego projektu)

# Custom ignores
!*.dll
# or
!My.specific.dll

# rest of .gitignore
jp36
źródło