git rm -r --cached non-retrait des sous-module dossier et le contenu
Solution: supprimer --cached
de git rm -r --cached submodule/name
. Script de référence.
Je suis en train de supprimer un git sous-module basé sur cette SORTE de réponse, mais le sous-module n'est pas supprimé.
- Je ajouter de la sous-module, valider les modifications, puis de les supprimer à l'aide de git rm -r --cached $path/to/submodule
(moins de fuite /), valider les modifications, mais le sous-module est toujours là.
Je peux utiliser rm -rf submodules/lift_sbt_24
de supprimer le dossier et le contenu, mais pourquoi n'est-ce pas git rm -r --cached
?
(suppression de la section pertinente de .gitmodules fonctionne très bien, pas de problème, donc n'est pas mentionné ici)
C'est git 1.7.5.4 sur Ubuntu 11.10, fwiw. Exemple complet:
$> git submodule add [email protected]:lift-stack/lift_24_sbt.git submodules/lift_24_sbt
Adding submodule from repo [email protected]:lift-stack/lift_24_sbt.git as submodules/lift_24_sbt
Cloning into submodules/lift_24_sbt...
remote: Counting objects: 619, done.
remote: Compressing objects: 100% (375/375), done.
remote: Total 619 (delta 172), reused 593 (delta 147)
Receiving objects: 100% (619/619), 1.74 MiB | 112 KiB/s, done.
Resolving deltas: 100% (172/172), done.
$> git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commits.
#
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: .gitmodules
# new file: submodules/lift_24_sbt
#
$> git add -a
$> git commit 'added submodules/lift_24_sbt'
[master 9894113] update
2 files changed, 4 insertions(+), 0 deletions(-)
create mode 160000 submodules/lift_24_sbt
$> git rm -r --cached submodules/lift_24_sbt
rm 'submodules/lift_24_sbt'
$> git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commits.
#
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# deleted: submodules/lift_24_sbt
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# submodules/lift_24_sbt/
$> git add -a
$> git commit -m 'deleted submodules/lift_24_sbt'
# On branch master
# Your branch is ahead of 'origin/master' by 1 commits.
#
nothing to commit (working directory clean)
$> ls -al submodules/lift_24_sbt/
total 1060
drwxr-xr-x 5 kurtosis kurtosis 4096 2012-04-18 17:26 ./
drwxrwxr-x 6 kurtosis kurtosis 4096 2012-04-18 17:26 ../
drwxrwxr-x 8 kurtosis kurtosis 4096 2012-04-18 17:32 .git/
drwxrwxr-x 2 kurtosis kurtosis 4096 2012-04-18 17:26 project/
drwxrwxr-x 3 kurtosis kurtosis 4096 2012-04-18 17:26 src/
-rw-rw-r-- 1 kurtosis kurtosis 931 2012-04-18 17:26 build.sbt
-rw-rw-r-- 1 kurtosis kurtosis 463 2012-04-18 17:26 .gitignore
-rw-rw-r-- 1 kurtosis kurtosis 91 2012-04-18 17:26 README.md
-rwxrwxr-x 1 kurtosis kurtosis 110 2012-04-18 17:26 sbt*
-rw-rw-r-- 1 kurtosis kurtosis 131 2012-04-18 17:26 sbt.bat
-rw-rw-r-- 1 kurtosis kurtosis 1041753 2012-04-18 17:26 sbt-launch.jar
$> git --version
git version 1.7.5.4
OriginalL'auteur Kurtosis | 2012-04-19
Vous devez vous connecter pour publier un commentaire.
Ce que vous voyez est correct;
git rm --cached -r
ne pas, en fait, de supprimer les fichiers de laworking tree
, seulement à partir de laindex
. Si vous voulezgit
pour supprimer les fichiers de laindex
et laworking tree
, vous ne devriez pas utiliser--cached
. Voir lagit-rm
de la page de manuel pour de plus amples informations.Qui suit est une explication de ce que vous avez fait. Je suis en supposant que vous avez tapé les étapes que vous avez pris, plutôt que de copier à partir d'un terminal; autant que je suis au courant,
git add -a
est pas connu git-ajouter un drapeau; je suis aussi assez sûr que vous signifiait aussigit commit -m <message>
.Le coupe-bas à des mesures que vous avez prises:
À ce point, vous avez ajouté avec succès le module, et tout fonctionne comme prévu.
Ce que vous essayez de faire est de supprimer le module:
Note: ici, nous ne pas de supprimer les fichiers de la
working index
, seulement de laindex
, en raison de la--cached
:Puis, vérifier que nous avons supprimé le sous-module:
Comme vous pouvez le voir, le sous-module a été supprimé, et tout est bon. Notez, cependant, que les fichiers existent toujours dans le arbre de travail - vous pouvez toujours consulter avec
ls
. 🙂git add -A
etgit commit -m
. - En cache à partir d'git rm -r $1
et script. Peut-être pas sage de le faire dans un script, mais il est au moins utile, comme une étape-par-étape de référence.OriginalL'auteur simont
Vous pouvez essayer et simpliyfy votre script, en utilisant une nouvelle commande (git1.8.3, avril 22, 2013), détaillée dans une nouvelle réponse à "Comment puis-je supprimer un Git sous-module?":
Il faut supprimer le sous-module arbre de travail ainsi que d'annuler l'inscription de
.git/config
.OriginalL'auteur VonC