2011-01-21 14 views
7

Czy istnieje sposób dodania katalogu do Git, ale wyklucza rozszerzenia w .gitgnore?Czy istnieje sposób na dodanie katalogu do Git, ale wykluczenie rozszerzeń w .gitgnore?

np kiedy wykonać polecenie, aby dodać katalog takich jak

git add console/* 

git reaguje z odpowiedzią

$ git add console/* 
The following paths are ignored by one of your .gitignore files: 
console/networkprobing.ppu 
console/opsdatamodule.lrs 
console/opsdatamodule.o 
console/opsdatamodule.ppu 
console/rcacsSystemDM.compiled 
console/rcacsSystemDM.o 
console/rcacsSystemTestProcs.o 
console/rcacsSystemTestProcs.ppu 
Use -f if you really want to add them. 
fatal: no files added 

Jak komenda być wykonane automatycznie wyklucza rozszerzenia .gitignore? Czy są jakieś dodatkowe opcje do przekazania?

+0

Wygląda na to, że ignorujesz już wszystkie pliki w 'konsoli /'. Jeśli tak nie jest, co znajduje się w pliku '.gitignore' i czego nie chcesz wykluczyć? –

Odpowiedz

10
git add console/* 

Problem polega na tym, że jest wieloznaczny rozszerzony przez powłoki globing i nie będą przekazywane bezpośrednio do git, więc git add jest naprawdę przepuszcza każdy plik w katalogu konsoli [1]. Ponieważ git-add odbiera każdy plik w katalogu jako argumenty, myśli, że naprawdę możesz próbować dodać ignorowany plik, dlatego pojawia się ostrzeżenie i sugeruje użycie -f, jeśli tak naprawdę chcesz to zrobić .

Rozwiązaniem jest niestosowanie globalizacji powłoki, ale wystarczy przekazać katalog w ten sposób.

git add console 

Podobnie właściwy sposób, aby dodać wszystko do repo (w tym pliki rozpoczynające się od „”) z wyjątkiem plików ignorowanych [2], aby repo jest użycie git add . i nie git add *.

[1] Z wyjątkiem tych rozpoczynających się od "." zakładając, że jesteś na powłoce sh i nie próbujesz tego z wiersza poleceń Windows cmd.exe. Jeśli używasz wiersza poleceń systemu Windows, powinieneś przełączyć się do używania powłoki Git-Bash z msysgit lub powłoki z cygwin, w zależności od tego, jak zainstalowałeś git.
[2] .gitignore służy wyłącznie do zapobiegania śledzeniu plików nieśledzonych, jeśli plik jest już śledzony przez git, a następnie będzie traktowany normalnie, dopóki nie zostanie usunięty z repozytorium. Można to zrobić bez wpływu na rzeczywisty plik z git rm --cached filename.

7

.gitignore może przyjmować wzorce globalne w stylu powłoki. Tak więc, na przykład, jeśli chcesz, aby ignorować wszystkie .jpg pliki można dodać

# Ignore all JPEGs 
*.jpg 

do .gitignore. Jeśli chcesz tylko ignorować JPEG w nowym katalogu, można zrobić

new_directory/*.jpg 

Następnie wystarczy dodać katalog jako normalny.

+0

Wyjaśniłem to pytanie lepiej, podając przykład polecenia i wyjścia Gita – vfclists

Powiązane problemy