impossibile aggiungere la cartella in git


21

Aggiungo una nuova cartella (in realtà l'ho clonata da un altro repository e l'ho dimenticata), quindi ho apportato alcune modifiche lì. Inoltre, ho fatto molte modifiche in altri posti, quando ho provato a fare git add

# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#   (commit or discard the untracked or modified content in submodules)
#
#   modified:   protected/ext/SpecificFolder (modified content)
#

Poi ricordo che forse c'era una cartella .git (perché in precedenza avevo clonato git lì). Sono andato in quella cartella e ho rimosso anche i file non necessari (cartelle) e la cartella .git. Ho controllato lo stato di git, niente di strano. Quindi eseguo il commit e il checkout in un altro ramo e improvvisamente capisco che questa cartella non è stata aggiunta all'ultimo commit. In realtà la cartella è stata aggiunta ma i file all'interno sono stati ignorati. Ora anche quando sto provando a fare git addper quella cartella non succede nulla e git statusnon mostra alcun cambiamento :(

Cosa posso fare ?


6
Nel caso in cui qualcun altro finisca su questa pagina con il problema che ho riscontrato: non sono stato in grado di aggiungere file in una sottocartella a Git. Successivamente ho scoperto che quella sottocartella aveva il suo .gitrepository e che i file venivano aggiunti a quel repository anziché al repository nella cartella principale. Anche nella GUI di Git, quella sottocartella è apparsa come file anziché come cartella.
Nav

Risposte:


29

Git non tiene traccia delle directory; ma solo i file al loro interno.

Sembra che potresti avere un modello di ignore che addnon fa nulla. Puoi vedere i file ignorati con git status --ignored; possono quindi essere tracciati congit add --force protected/ext/SpecificFolder


1
No, non è presente git status --ignored, in qualche modo sto pensando che sia collegato al sottomodulo
user1016265

1
Questo comando è stato un salvavita. Senza di essa, non avrei mai capito quale directory fosse ignorata.
IgorGanapolsky,

wow ..... mi sono sentito totalmente stupido leggendo questo fatto dopo aver usato git per qualche tempo ormai ^^
XandruCea

1
Ah, finalmente. Questo era il mio problema Avevo copiato .gitignore dal genitore e in sottomoduli. Stavo ignorando 'config /' e in seguito ho creato una directory sotto la directory di origine chiamata config. Impossibile aggiungere coraggio. Problema risolto ora grazie :-)
Avec

7

Git non tiene traccia delle directory EMPTY. Se hai un progetto con più livelli di sottodirectory, git infatti tiene traccia delle directory con i file in essi contenuti. In caso contrario, si tratterebbe di un repository di file semplice.


Caspita, è una cosa così semplice ma dannazione. Ho letto questo e ho detto "oh mio Dio che è esattamente"
Brian dice Reinstate Monica il

3

Mi è capitato di fare esattamente quello che ha fatto questo utente: aggiungere un repository git esistente all'interno di un altro.

Il sintomo era che git riconosceva quella directory come file e quindi non era in grado di aggiungere i file della directory.

Per risolvere questa domanda, ho eliminato la .gitcartella nella cartella, spostata quella cartella in un'altra directory, cancellato l'indice, rimosso la directory in cui nel mio repository, e quindi sono stato in grado di aggiungere correttamente la directory.

La morale di questo è: non aggiungere un repository all'interno di un altro.


5
Può anche essere risolto eseguendogit rm --cached path_to_submodule
Victor Marchuk il


0

Prova ad aggiungere un file in quella directory.

$ git add my-dir/index.html

Se vedi un output come il seguente:

The following paths are ignored by one of your .gitignore files:
my-dir/index.html
Use -f if you really want to add them.
fatal: no files added

C'è una regola in uno dei tuoi gitignores che ti impedisce di aggiungere quella directory.


0

Ho trovato effetti collaterali simili dopo aver provato a convertire quello che era un sottomodulo in una sottocartella normale.

Ri-aggiungere la cartella che stavo tentando di convertire sembrava funzionare, ma si scopre che i file al suo interno non sono stati effettivamente aggiunti.

Cercare di aggiungere un file al suo interno mi ha dato un avvertimento migliore

git add sites/all/modules/contrib/transclusion/transclusion.module 
fatal: Pathspec 'sites/all/modules/contrib/transclusion/transclusion.module' is in submodule 'sites/all/modules/contrib/transclusion'
  • quindi era correlato al modo in cui avevo tentato manualmente di rimuovere il vecchio sottomodulo, in quanto non esisteva un processo ben documentato per farlo correttamente. - L'ho appena eliminato da .gitmodules. Altre cose erano effettivamente necessarie per erizzare le ombre del sottomodulo.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.