Lepszym pytaniem może być - dlaczego chcesz to zrobić? Jeśli chcesz śledzić plik, anuluj go (poprzedź jego wzorzec w .gitignorepliku !np !dont/ignore/this/file.).
Ohad Schneider,
6
@OhadSchneider Jest to przydatne, jeśli wymuszasz zatwierdzenie plików kompilacji do innej gałęzi. Robi to kilka projektów, takich jak StrongLoop dla bezpiecznych wdrożeń
Deminetix,
5
@OhadSchneider Dla nas jest to więcej, ponieważ większość programistów instaluje git z Visual Studio 2015, który dodaje globalny gitignore do folderu użytkownika. Wyklucza to pliki takie jak * .dll i * .exe. Jest to świetne dla naszych nowych projektów, które używają tylko pakietów nuget, które są pobierane podczas kompilacji, ale w przypadku niewielkiej liczby starszych projektów nadal używamy bibliotek dll, które są ręcznie przywoływane w rozwiązaniu. W przypadku tych projektów chcielibyśmy ręcznie dołączyć je, zamiast informować każdego programistę, aby komentował pliki * .dll i * .exe w globalnym gitignore.
Nullius
4
@Nullius Czy nie możesz ich po prostu zignorować na wyższym poziomie .gitignore(powiedzmy, dodaj .gitignorew tym samym folderze co dll, jeden powyżej lub coś takiego)?
Uhm, który nie działa, w stanie git plik nadal nie jest wyświetlany
Mark
5
Cóż, przetestowałem to, aby upewnić się, że naprawdę działa i działa. Czy możesz opisać swoje środowisko (system operacyjny, wersja git ...)? Oto, co właściwie zrobiłem: echo "/foo" >> .gitignore; echo "bar" > foo; git add foo # should throw an error; git add -p foo # works(nie mogę wkleić nowego wiersza w komentarzu, wykonaj polecenia 1 na 1
Daniel Böhmer,
4
To samo mi się przydarzyło, wcześniej uruchomiłem git update-index - asume-niezmieniony na moich plikach. Musiałem cofnąć to z --no-assume-niezmienione i zadziałało
Jako
4
Działa to tylko dla mnie przy użyciu symboli wieloznacznych, używania git 1.9.5 w systemie Windows, nawet po wypróbowaniu opcji --no - assume-niezmieniona. „git add - f <nazwa_pliku>” nic nie robi, ale „git add -f *” działa. Działa także TortoiseGit.
mhenry1384,
@ mhenry1384 Przyczyną tego, że działa on dla symboli wieloznacznych tylko w systemie Windows, może wynikać ze sposobu użycia separatora ścieżek. Dla mnie ukośnik „/” działa, ale ukośnik odwrotny „\” nie. Fakt, że cmd / PowerShell konwertuje „/” na „\” dla nas, ułatwia uruchomienie.
ohw
19
Pomimo działającego rozwiązania Daniela Böhmera, Ohad Schneider zaproponował lepsze rozwiązanie w komentarzu:
Jeśli plik jest zwykle ignorowany, a użytkownik zmuszony jest go dodać - może zostać przypadkowo zignorowany w przyszłości (na przykład po usunięciu pliku, wówczas zatwierdzenie zostanie wykonane i plik zostanie ponownie utworzony).
To jest poprawne. Użyłem opcji --force dla małych plików danych, a następnie przestawiłem trochę strukturę folderów i zablokowałem wszystkie pliki śledzone przy użyciu siły. JEDNAK: w .gitignoreużyciu !specific-file-name.txtbez hierarchii folderów, w ten sposób śledzenie będzie śledzić plik wokół repozytorium.
Merlin
Zależy to od scenariusza, np. Kiedy chcesz wykluczyć „1.txt” we wszystkich folderach, a kiedyś „folder1 / *. Txt”
AS
14
To nie jest „lepsze” rozwiązanie. To rozwiązanie innego problemu.
aij
2
Innym sposobem osiągnięcia tego jest tymczasowa edycja pliku gitignore, dodanie pliku, a następnie przywrócenie gitignore z powrotem. Czuję się trochę zuchwały
.gitignore
pliku!
np!dont/ignore/this/file
.)..gitignore
(powiedzmy, dodaj.gitignore
w tym samym folderze co dll, jeden powyżej lub coś takiego)?Odpowiedzi:
Zobacz
man git-add
:Więc uruchom to
źródło
echo "/foo" >> .gitignore; echo "bar" > foo; git add foo # should throw an error; git add -p foo # works
(nie mogę wkleić nowego wiersza w komentarzu, wykonaj polecenia 1 na 1Pomimo działającego rozwiązania Daniela Böhmera, Ohad Schneider zaproponował lepsze rozwiązanie w komentarzu:
Jeśli plik jest zwykle ignorowany, a użytkownik zmuszony jest go dodać - może zostać przypadkowo zignorowany w przyszłości (na przykład po usunięciu pliku, wówczas zatwierdzenie zostanie wykonane i plik zostanie ponownie utworzony).
Powinieneś po prostu zignorować go w pliku .gitignore w ten sposób: Unignore podkatalogi ignorowanych katalogów w Git
źródło
.gitignore
użyciu!specific-file-name.txt
bez hierarchii folderów, w ten sposób śledzenie będzie śledzić plik wokół repozytorium.Innym sposobem osiągnięcia tego jest tymczasowa edycja pliku gitignore, dodanie pliku, a następnie przywrócenie gitignore z powrotem. Czuję się trochę zuchwały
źródło