2013-03-20 16 views
76

Tytuł mówi wszystko. Próbuję dodać moje pakiety NuGet do repozytorium. Wszystko oprócz plików .dll jest wykrywanych.repozytorium git ignorowanie wszystkich .dlls

Plik gitignore nie zawiera odnośników do * .dll. Pliki .dll nie są rozpoznawane, gdy znajdują się w dowolnym miejscu w całym repozytorium. info/exclude jest również puste.

Mam również sklonowane repozytorium (system plików do systemu plików w przeciwieństwie do zdalnego do file-sysytem) bez powodzenia. Ten problem występuje również na dwóch różnych komputerach.

Mogę ręcznie dodać pliki .dll, ale powinny być one śledzone. Dlaczego nie są śledzone?

+21

Co 'git config --get core.excludesfile' powiedzieć –

+1

.? Również ogólnie nie jest ag ood pomysł użycia git do śledzenia plików binarnych, ponieważ git nie może efektywnie obliczyć delt między wersjami, więc utrzymywanie wszystkich wersji będzie marnotrawstwem, jeśli jest miejsce. Jeśli biblioteki dll są generowane w locie, lepiej zignorować je w git. Jeśli tak nie jest - lepiej użyć innego mechanizmu synchronizacji (np. Rsync). –

+0

To są pakiety NuGet, które próbuję dodać do git. Nie korzystam z funkcji "Przywracania pakietów" NuGet, więc potrzebuję całego folderu pakietów. –

Odpowiedz

107

Czy masz w katalogu domowym ~/.gitignore_global lub ~/.gitignore, który może również zawierać listę tych wzorców plików?

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

+5

Biorąc pod uwagę, że pracuje z plikami DLL, jest na platformie Windows, więc ~ oznacza $ HOMEDRIVE $ HOMEPATH pod Windows 7 –

+8

To się okazało być problemem. Nie dodałem jednak tego globalnego pliku ignorowania. Jakiś powód, dla którego po prostu wyskoczyłby znikąd? Teraz, kiedy o tym myślę, ostatnio zainstalowałem SourceTree (z Atlassian). Może to winowajca? –

+6

Miałem ten sam problem, wcześniej zainstalowałem SourceTree. Sądzę więc, że można zgadywać, że SourceTree dodał globalny plik ignorujący, ponieważ działał w przeszłości. –

8

mogę dodać dll pliki ręcznie, ale powinny one być śledzone. Dlaczego nie są śledzone?

Nie, one nie powinny być śledzone, chyba że je dodałeś. Tylko pliki, które są już dodane i zatwierdzone, są śledzone; to oznacza "śledzone".

Spróbuj ręcznie dodając jeden z nich poprzez git add i będzie powiedzieć dlaczego to je ignoruje, i poprosi, aby korzystać git add -f dodać plik jakikolwiek.

+0

Zrobiłem "git add"/packages '"i nie wykryłem .dlls. Potem użyłem -f i to dodało. Znalazłem problem. "* .dll" był w moim globalnym zignorowaniu. Nie ma pojęcia, skąd się wzięło to globalne ignorowanie. –

2

Musisz jawnie powiedzieć git, aby śledził nowe pliki.

  1. Uruchom plik git add filename, aby dodać plik do indeksu git.

  2. Uruchom git commit, aby zatwierdzić zmiany w indeksie.

git status powinien również pokazać listę nieśledzonej plików i katalogów.

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

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

Jeśli chcesz wymienić wszystkie nieśledzone plików w repo:

git ls-files . --exclude-standard --others 
+1

Musiałem "git add -f" śledzić pliki, które w rzeczywistości zostały zignorowane.Okazało się, że jest to wpis w globalnym pliku zignorowania, który pewna aplikacja umieściła tam dla mnie bezwiednie. –

1

W moim przypadku nie było żadnych odniesień .dll w pliku .gitignore, a ja nie miałem pliku globalnego. Jednak w podkatalogu .git znalazłem plik o nazwie ms-persist.xml. Zamknąłem wszystkie wystąpienia Visual Studio, a następnie ręcznie dodałem moje brakujące pliki .dll do tego pliku. Kiedy ponownie otworzyłem studio graficzne, pliki .dll wyświetlały się jako potrzebne do sprawdzenia. Sprawdziłem je i teraz jestem złoty ...

76

Jeśli użyjesz SourceTree i ustawienie domyślne zignoruje wszystkie biblioteki DLL domyślnie ... Narzędzia => Opcje => Git następnie "Edytuj plik" ... dodaj "#" przed .dll => "# .dll" ... zapisz i zamknij.

Następnie dla Eksploratora Windows w folderze paczki otwórz terminal GitBash i wpisz "git add." i niech to zadziała, z powrotem do SourceTree poczekaj chwilę i wszystkie te brakujące pakiety DLL pojawią się, abyś zatwierdził i pchnął.

+9

Prawidłowa odpowiedź dla użytkowników SourceTree;) – jmpcm

+0

Czy wiesz o globalnej liście ignorowanych, nie można jej znaleźć w GUI .. Dzięki! – Christoph

+0

Narzędzia => Opcje => Git/Mercurial Global Ignore List ... Jeśli nie masz, możesz je utworzyć i wskazać tam. – KevinB

0

Masz globalne .gitignore gdzieś lub dalej pliki .gitignore w podkatalogach - w stosunku do katalogu głównego twojego projektu.

na systemach Linux oraz MacOS globalny git-zignorować to najprawdopodobniej w domu ~/

~/.gitignore_global

W Windows jest prawdopodobne w katalogu użytkownika. Albo lokalny użytkownik (co można dowiedzieć się wpisując ECHO %USERPROFILE% lub whoami w linii poleceń.

Jeśli to nie istnieje, to na pewno .gitconfig występuje zamiast. Spójrz tu dla lokalizacji gitignore (np użytkownika Documents Folder)

Edit. Zastosowanie git config --list --show-origin, aby uzyskać szczegółowe informacje o ustawieniach przyczyniających git i odpowiadające im lokalizacje plików

Powiązane problemy