Come posso ignorare directory o cartelle in Git usando msysgit su Windows?
.gitkeep
) per indicare una directory che dovrebbe essere mantenuta
/
alla fine ciò che lo fa sapere che è una directory che dovrebbe ignorare?
Come posso ignorare directory o cartelle in Git usando msysgit su Windows?
.gitkeep
) per indicare una directory che dovrebbe essere mantenuta
/
alla fine ciò che lo fa sapere che è una directory che dovrebbe ignorare?
Risposte:
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 sono qui .
Per impostazione predefinita, Windows Explorer verrà visualizzato .gitignore
quando in realtà il nome del file è .gitignore.txt
.
Git non utilizzerà .gitignore.txt
E non puoi rinominare il file in .gitignore
, perché Windows Explorer pensa che sia un file di tipo gitignore senza un nome.
Soluzione senza riga di comando:
Puoi rinominare un file in ".gitignore". e creerà ".gitignore"
".gitignore"
e lo salva senza aggiungere automaticamente un'estensione.
".gitignore."
- Questo è un grande trucco! Ho sempre avuto problemi anche con .htaccess
...
Sembra che per ignorare file e directory ci siano due modi principali:
.gitignore
.gitignore
file nella radice del repository oltre alla .git
cartella (in Windows, assicurati di vedere l'estensione del file vero e poi crea .gitignore.
(con il punto alla fine per creare un'estensione del file vuota))~/.gitignore_global
e in esecuzione git config --global core.excludesfile ~/.gitignore_global
per aggiungere questo alla tua configurazione GitNota: i file tracciati in precedenza non possono essere monitorati eseguendo git rm --cached filename
Repository exclude - Per i file locali che non devono essere condivisi, è sufficiente aggiungere il modello o la directory del file al file .git/info/exclude
. Queste regole non vengono impegnate, quindi non vengono visualizzate da altri utenti . Ulteriori informazioni sono qui .
Per fare eccezioni nell'elenco dei file ignorati, vedere questa domanda .
git rm --cached <filename>
. Assolutamente fondamentale per i pronti contro termine che esisteva prima della creazione del.gitignore
Ho avuto alcuni problemi durante la creazione di un file in Esplora risorse con .
a all'inizio.
Una soluzione alternativa consisteva nell'entrare nella shell di comando e creare un nuovo file usando "modifica".
.
alla fine in modo che explorer smetta di pensare che .gitignore
sia l'estensione. Quindi all'ingresso quel punto finale senza estensione viene appena mangiato e ti viene lasciato con .gitignore
TL; DR: prova a .gitignore.
.gitignore
Per indicare a Git di ignorare determinati file o cartelle, è necessario creare un .gitignore
file.
Ma in Windows Explorer devi fornire un nome per il file. Non è possibile creare file con solo un'estensione. Il trucco è quello di creare un file di testo vuoto e andare al prompt dei comandi e modificare il nome del file in .gitignore
:
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. È inoltre possibile utilizzare i caratteri jolly come questo: *.txt
.
type nul > .gitignore
per creare un file vuoto
.gitignore.
quando le estensioni dei file non sono nascoste in Esplora risorse di Windows
Se si desidera mantenere una cartella e non i file al suo interno, basta inserire un file ".gitignore" nella cartella con "*" come contenuto. Questo file farà in modo che Git ignori 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 add:
$ 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 sfugge a questi spazi con una barra rovesciata (come my\ file.txt
) e Git per Windows non distingue tra /
e \
.
Per escludere tutte le directory, utilizzare meglio:
** /
Due asterischi consecutivi indicano il contenuto della directory.
Anche nella \.git\info
directory dei progetti c'è un file di esclusione che è effettivamente la stessa cosa di .gitignore
(credo). È possibile aggiungere file e directory da ignorare in questo.
Nel caso in cui sia necessario escludere le sottocartelle, è possibile utilizzare il **
carattere jolly per escludere qualsiasi livello di sottodirectory.
**/build/output/Debug/
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
Obbiettivo
Livello superiore .gitignore (/root/.gitignore)
Directory ignorata .gitignore (/root/dirB.gitignore)
Ed è così semplice :)
Quando tutto il resto fallisce, prova a modificare il file
/.git/info/exclude
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 "compilate" all'elenco di file e directory da ignorare.
È possibile creare il file ".gitignore" con il contenuto:
*
!.gitignore
Per me funziona.
Su Unix:
touch .gitignore
Su Windows:
echo > .gitignore
Questi comandi eseguiti in un terminale creeranno un .gitignore
file nella posizione corrente.
Quindi aggiungi semplicemente informazioni a questo .gitignore
file (usando Notepad ++ per esempio) quali file o cartelle dovrebbero essere ignorati. Salva le tue modifiche. Questo è tutto :)
Ulteriori informazioni: .gitignore
Ho avuto dei problemi nel far ritirare Git .gitignore
su Windows. Il $GIT_DIR/info/exclude
file sembra sempre funzionare però.
L'aspetto negativo di questo approccio, tuttavia, è che i file nella $GIT_DIR
directory non sono inclusi nel check-in e quindi non condivisi.
ps
$GIT_DIR
è di solito la cartella nascosta denominata.git
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 .gitignore
te descrivi. Questo ti daràgit status
output 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 index.html
file 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 delindex.html
file:
git add *cache/index.html
git commit -m "Adding index.html files to the cache directories"
... e il tuo git status
poi la volontà sarà simile a:
$ 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 anche tu vuoi impegnarti .gitignore
. Ero solo pigro con questo caso di test.)
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 è un file chiamato data.txt
:
echo data.txt >> .gitignore
Se è un percorso come "Dati / passwords.txt"
echo "Data/passwords.txt" >> .gitignore.
Ho avuto problemi simili. Lavoro su una catena di strumenti di Windows con un repository condiviso con ragazzi di Linux e 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 fatto il check-in, avrebbero creato il caos.
Windows ha impostato la distinzione tra maiuscole e minuscole e Git in modo da non ignorare la distinzione tra maiuscole e minuscole, ma non riesce comunque (nelle chiamate dell'API Win32 apparentemente).
Se eseguo 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-changes-to-tracked-files/index.html
Basta creare il .gitignore
file nella cartella del progetto Quindi aggiungere il nome della cartella in esso per es:
frontend/node_modules