Come posso ignorare le directory o le cartelle in Git usando msysgit su Windows?
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/
Maggiori informazioni qui .
Per impostazione predefinita, Windows Explorer visualizzerà .gitignore
quando in realtà il nome del file è .gitignore.txt
Git non userà .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 linea di comando:
Puoi rinominare un file in ".gitignore". e creerà ".gitignore"
Sembra che per ignorare i file e le directory ci siano due modi principali:
.gitignore
.gitignore
file .gitignore
nella root del repository oltre alla cartella .git
(in Windows assicurati di vedere la vera estensione del file e poi fai .gitignore.
(Con il punto alla fine di rendere vuota l’estensione del file)) ~/.gitignore_global
ed eseguire git config --global core.excludesfile ~/.gitignore_global
per aggiungere questo alla tua git config nota: i file rintracciati prima possono essere non tracciati eseguendo git rm --cached filename
Repo exclude – Per i file locali che non devono essere condivisi, basta aggiungere il file pattern o la directory al file .git/info/exclude
. Queste regole non sono commesse, quindi non sono viste da altri utenti maggiori informazioni qui
[aggiornato] Per fare delle eccezioni nella lista dei file ignorati, vedi questa domanda .
Ho avuto alcuni problemi nella creazione di un file in Windows Explorer con a. all’inizio.
una soluzione alternativa era 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 creare 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 .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. puoi anche usare caratteri jolly come questo *.txt
spero che risponda alla tua domanda
Se si desidera mantenere una cartella e non i file al suo interno, basta mettere un file “.gitignore” 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 l’aggiunta:
$ git add path/to/folder/.gitignore -f
In Windows c’è una presa in più con le barre. Escludendo una singola directory in .gitignore con
dir_to_exclude /
funzionerà, ma escludendo tutte le directory con
/
causa problemi quando hai nomi di file con spazi (come il my file.txt
) nella tua directory: Git bash fugge questi spazi con una barra rovesciata (come il my\ file.txt
) e Git per Windows non fa distinzioni tra /
e \
.
Per escludere tutte le directory utilizzare meglio:
** /
Due asteriscs consecutivi indicano il contenuto della directory.
Anche nella directory dei progetti \.git\info
esiste un file di esclusione che è effettivamente la stessa cosa di .gitignore
(credo). Puoi aggiungere file e directory da ignorare.
Ho avuto alcuni problemi a ottenere git per ritirare il file .gitignore su Windows. Il file $ GIT_DIR / info / exclude sembra funzionare comunque. Lo svantaggio di questo approccio, tuttavia, è che i file nella directory $ GIT_DIR non sono inclusi nel check-in e quindi non condivisi.
(ps $ GIT_DIR è in genere la cartella nascosta denominata .git)
Puoi creare il file “.gitignore” con il contenuto:
* !.gitignore
Funziona per me e per i semplici.
Presumo il problema è che il tuo albero di lavoro è 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à l’output dello git status
come:
$ git status # On branch master # Untracked files: # (use "git add ..." to include in what will be committed) # # .gitignore # a-cache/ # b-cache/
… se i file index.html
non sono stati ancora 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 impegnato i file index.html
:
git add *cache/index.html git commit -m "Adding index.html files to the cache directories"
… e il tuo git status
sarà quindi:
$ git status # On branch master # Untracked files: # (use "git add ..." 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 commettere .gitignore
, ero solo pigro con questo test case.)
Per ignorare un’intera directory in git, il modo più semplice è includere un file .gitignore all’interno della directory di destinazione che contiene semplicemente “*”
Un esempio illustrativo,
Sistema di esempio
/root/ .gitignore /dirA/ someFile1.txt someFile2.txt /dirB/ .gitignore someFile3.txt someFile4.txt
Obbiettivo
Primo livello .gitignore (/root/.gitignore)
Directory ignorata .gitignore (/root/dirB.gitignore)
ed è così semplice 🙂
Nel caso in cui sia necessario escludere le sottocartelle, è ansible utilizzare il carattere jolly **
per escludere qualsiasi livello di sottodirectory.
**/build/output/Debug/
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 “assets” e “compilato” all’elenco di file e directory da ignorare.
Su Unix:
touch .gitignore
Su Windows:
echo > .gitignore
Questi comandi eseguiti in un terminale creeranno un file .gitignore
nella posizione corrente.
Quindi aggiungi solo 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/saving-changes/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 [ad eccezione dei casi] in una data 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.
Ho windows impostate su maiuscole e minuscole e git per non ignorare maiuscole e minuscole ma non riesce ancora (nelle chiamate a32 api apparentemente).
Se registro i file, devo ricordarmi di non tracciare il 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
Chris
Su Windows e Mac, se si desidera ignorare una cartella denominata Flower_Data_Folder nella directory corrente, è ansible eseguire:
echo Flower_Data_Folder >> .gitignore
Se è un file chiamato data.txt
echo data.txt >> .gitignore
se è un percorso come “Data / passwords.txt”
echo “Data / passwords.txt” >> .gitignore.