Ignorare le directory nei repository Git su Windows
Domanda
Come posso ignorare directory o cartelle in Git usando msysgit su Windows?
Soluzione
Crea un file chiamato .gitignore
nella directory del tuo progetto. Ignora le directory inserendo il nome della directory nel file (con una barra aggiunta):
dir_to_ignore/
Ulteriori informazioni qui .
Altri suggerimenti
Per impostazione predefinita, Windows Explorer visualizzerà .gitignore
quando in realtà il nome del file è .gitignore.txt
Git non utilizzerà .gitignore.txt
E non puoi rinominare il file in .gitignore
perché explorer pensa che sia un file di tipo gitignore senza nome.
Soluzione non a riga di comando:
You can rename a file to ".gitignore." and it will create ".gitignore"
Sembra che per ignorare file e directory ci siano due modi principali:
.gitignore
- Posizionando il file
.gitignore
nella radice del repository oltre alla cartella.git
(in Windows assicurati di vedere l'estensione del file vero e quindi fare.gitignore.
(con il punto alla fine per rendere l'estensione del file vuota)) - Effettuare la configurazione globale
~ / .gitignore_global
ed eseguiregit config --global core.excludesfile ~ / .gitignore_global
per aggiungere questo al tuo git config
nota: i file tracciati prima possono essere non tracciati eseguendo
git rm - nome file nella cache
- Posizionando il file
Ripeti esclusione - Per i file locali che non devono essere condivisi, è sufficiente aggiungere la sequenza di file o la directory al file
.git / info / exclude
. Queste regole non sono vincolate, quindi non sono visualizzate da altri utenti maggiori informazioni qui
[aggiornato] Per fare eccezioni nell'elenco dei file ignorati, vedere questa domanda .
Ho riscontrato alcuni problemi durante la creazione di un file in Windows Explorer con a. all'inizio.
una soluzione alternativa consisteva nell'entrare nella shell dei comandi e creare un nuovo file usando " modifica "
per indicare a GIT di ignorare determinati file o cartelle, devi creare il file .gitignore
.
ma in Windows Explorer devi fornire un nome per il file, non puoi semplicemente creare un file con solo estensione, il trucco è creare un file di testo vuoto e andare al prompt dei comandi e cambiare il nome del file in
ren "New Text Document.txt" .gitignore
ora apri il file con il tuo editor di testo preferito e aggiungi i nomi di file / cartelle che desideri ignorare. puoi anche usare caratteri jolly come questo *.txt
spero che risponda alla tua domanda
Se vuoi mantenere una cartella e non i file al suo interno, inserisci semplicemente " .gitignore " file nella cartella con " * " come contenuto. Questo file ignorerà tutto il contenuto dal repository. Ma .gitignore
sarà incluso nel tuo repository.
$ git add path/to/folder/.gitignore
Se aggiungi una cartella vuota, ricevi questo messaggio (.gitignore è un file nascosto)
The following paths are ignored by one of your .gitignore files:
path/to/folder/.gitignore
Use -f if you really want to add them.
fatal: no files added
Quindi, usa " -f " per forzare aggiungere:
$ git add path/to/folder/.gitignore -f
In Windows c'è un problema in più con le barre. Escludendo una singola directory in .gitignore con
dir_to_exclude /
probabilmente funzionerà, ma escludendo tutte le directory con
/
causa problemi quando hai nomi di file con spazi (come my file.txt
) nella tua directory: Git bash esce da questi spazi con una barra rovesciata (come my \ file.txt
) e Git per Windows non distingue tra /
e \
.
Per escludere meglio tutte le directory, utilizzare:
** /
Due asterisco consecutivi indicano il contenuto della directory.
Anche nella directory dei progetti \ .git \ info
c'è un file di esclusione che è effettivamente la stessa cosa di .gitignore
(credo). Puoi aggiungere file e directory da ignorare in questo.
Per ignorare un'intera directory in git, il modo più semplice è includere un file .gitignore nella directory di destinazione che contenga semplicemente " * "
Un esempio illustrativo,
Sistema di esempio
/root/
.gitignore
/dirA/
someFile1.txt
someFile2.txt
/dirB/
.gitignore
someFile3.txt
someFile4.txt
Obiettivo
- ignora il contenuto di / dirB /
.gitignore di primo livello (/root/.gitignore)
- Qui è dove vanno le tue informazioni standard su gitignore
Directory ignorata .gitignore (/root/dirB.gitignore)
- Questo file viene appena letto come '*' e la directory viene ignorata completamente, se stessa e tutti i file!
ed è così semplice :)
Nel caso in cui sia necessario escludere le sottocartelle, è possibile utilizzare il carattere jolly **
per escludere qualsiasi livello di sottodirectory.
**/build/output/Debug/
Ho avuto dei problemi a ottenere git per ritirare il file .gitignore su Windows. Il file $ GIT_DIR / info / exclude sembra sempre funzionare comunque. Il rovescio della medaglia di questo approccio, tuttavia, è che i file nella directory $ GIT_DIR non sono inclusi nel check-in e quindi non condivisi.
(p.s. $ GIT_DIR è in genere la cartella nascosta denominata .git)
Puoi creare il " .gitignore " file con il contenuto:
*
!.gitignore
Funziona per me e per i semplici.
Quando tutto il resto fallisce prova a modificare il file
/. Git / info / escludere
e aggiungendo le directory che vuoi alla fine del file, in questo modo:
# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~
assets/
compiled/
Ho aggiunto le cartelle " risorse " e "compilato" all'elenco di file e directory da ignorare.
Presumo che il problema sia che il tuo albero di lavoro sia come:
a-cache/foo
a-cache/index.html
b-cache/bar
b-cache/foo
b-cache/index.html
.gitignore
... con il .gitignore
che descrivi. Questo ti darà un output git status
come:
$ git status
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# .gitignore
# a-cache/
# b-cache/
... se i file index.html
non sono ancora stati aggiunti al repository. (git vede che ci sono file non firmati nelle directory della cache, ma riporta solo le directory.) Per risolvere questo problema, assicurati di aver aggiunto e eseguito il commit dei file index.html
:
git add *cache/index.html
git commit -m "Adding index.html files to the cache directories"
... e il tuo git status
appariranno quindi:
$ git status
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# .gitignore
nothing added to commit but untracked files present (use "git add" to track)
(Ovviamente vuoi impegnare anche .gitignore
, ero solo pigro con questo caso di test.)
Su Unix:
touch .gitignore
Su Windows:
echo > .gitignore
Questi comandi eseguiti in un terminale creeranno un file .gitignore
nella posizione corrente.
Quindi aggiungi semplicemente informazioni a questo file .gitignore
(usando Notepad ++ per esempio) quali file o cartelle dovrebbero essere ignorati. Salva le tue modifiche. Questo è tutto :)
Ulteriori informazioni: https://www.atlassian.com/git/ Tutorials / risparmio-modifiche / gitignore
Su Windows e Mac, se si desidera ignorare una cartella denominata Flower_Data_Folder nella directory corrente, è possibile eseguire:
echo Flower_Data_Folder > > .gitignore
Se si tratta di un file denominato data.txt
echo data.txt > > .gitignore
se è un percorso come " Data / passwords.txt "
echo " Dati / passwords.txt " & Gt; > .gitignore.
Ho avuto problemi simili, lavoro su una catena di strumenti di Windows con un repository condiviso con ragazzi di Linux, creano felicemente file con gli stessi nomi [tranne il caso] in una determinata cartella.
L'effetto è che posso clonare il repository e avere immediatamente dozzine di file "modificati" che, se avessi effettuato il check-in, avrebbero creato il caos.
Ho Windows impostato sulla distinzione tra maiuscole e minuscole e git per non ignorare la distinzione tra maiuscole e minuscole, ma non riesce ancora (nelle chiamate api win32 apparentemente).
Se gitignore i file, devo ricordare di non tenere traccia del file .gitignore.
Ma ho trovato una buona risposta qui http: // archive .robwilkerson.org / 2010/03/02 / git-tip-ignore-cambiamenti-to-file-cingolati / index.html
Chris