J'ai un dépôt Git que j'ai supprimé quatre fichiers de l'utilisation rm
( pas git rm
), et mon statut Git ressemble à ceci:
# deleted: file1.txt
# deleted: file2.txt
# deleted: file3.txt
# deleted: file4.txt
Comment puis-je supprimer ces fichiers de Git sans avoir à parcourir manuellement et ajouter chaque fichier comme ceci:
git rm file1 file2 file3 file4
Idéalement, je recherche quelque chose qui fonctionne de la même manière que git add .
si cela est possible.
git
git-commit
git-add
git-rm
Codebeef
la source
la source
git rm
, la suppression pourrait avoir été effectuée à partir d'un outil distinct, d'un IDE ou d'un gestionnaire de fichiers. Visual Studio pour un peut être pénible lors de la suppression / du renommage de fichiers.git rm
c'est un peu comme demander pourquoi il n'utilise pasgit vim
ougit cd
. C'est une chose stupide à faire, et git devrait avoir une commande ou un alias intégré pour supprimer les fichiers supprimés du staging, et vous ne devriez pas avoir à le rechercher sur SO ou à lire les pages de manuel pendant votre pause déjeuner.Réponses:
Pour Git 1.x
Cela indique à git de mettre automatiquement en scène les fichiers suivis - y compris la suppression des fichiers précédemment suivis.
Pour Git 2.0
Pour mettre en scène tout votre arbre de travail:
Pour mettre en scène uniquement le chemin actuel:
la source
git add -u folder/
pour exécuter cette opération dans un dossierpourrait être ce que vous cherchez .. cela fonctionne pour moi ..
la source
git ls-files --deleted -z | xargs -0 git rm
Vous pouvez utiliser
Pour ajouter les fichiers supprimés à la zone de transit, puis validez-les
la source
Si vous exécutez simplement:
git mettra à jour son index pour savoir que les fichiers que vous avez supprimés devraient en fait faire partie du prochain commit. Ensuite, vous pouvez exécuter "git commit" pour enregistrer ce changement.
Ou, si vous exécutez:
Il prendra automatiquement ces modifications (et toutes autres) et les validera.
Mise à jour : si vous souhaitez uniquement ajouter des fichiers supprimés, essayez:
la source
git commit -a
fera ce que je veux, sauf que dans certains cas, j'ai des fichiers que je ne veux pas valider, donc je veux préparer le commit manuellement.Vous recherchez probablement -A:
ceci est similaire à git add -u, mais ajoute également de nouveaux fichiers. C'est à peu près l'équivalent de la
addremove
commande de hg (bien que la détection de mouvement soit automatique).la source
Pour mettre en scène uniquement les fichiers supprimés :
Ou (à la manière des xargs):
Vous pouvez alias votre jeu de commandes préféré pour une utilisation ultérieure pratique.
la source
xargs
faut environ 15 minutes pour maîtriser.git status | awk '/deleted/ {print $3}' | xargs git rm
serait un moyen plus court de le faire.grep | awk
... Just Say No.git rm $(git ls-files --deleted)
n'est-ce pas plus pratique (copié à partir de cela ).git ls-files --deleted | while read f; do git rm $f; done
xargs
est probablement plus efficace qu'une boucle while pour une énorme liste, car il passe plus d'un argument à chaque exécutiongit rm
. Pour limiter le nombre d'arguments transmis àgit rm
chaque exécution, utilisez l'-n
option:git ls-files --deleted | xargs -n 15 git rm
Avant ou après avoir supprimé le fichier réel.
la source
rm
et à le regretter plus tard.git add -u
? Il semble qu'il serait plus sûr d'ajouter les fichiers spécifiques qui ont été supprimés au commit, plutôt que d'ajouter TOUTES les modifications.En utilisant git-add avec les options '--all' ou '--update' vous pouvez obtenir plus que vous ne le vouliez. Des fichiers nouveaux et / ou modifiés seront également ajoutés à l'index. J'ai une configuration d'alias bash pour quand je veux supprimer des fichiers supprimés de git sans toucher à d'autres fichiers:
Tous les fichiers qui ont été supprimés du système de fichiers sont ajoutés à l'index lorsqu'ils sont supprimés.
la source
Ce n'est pas vraiment important, mais je ne suis pas d'accord avec la réponse choisie:
... supprimera les fichiers de l'index si les fichiers correspondants dans l'arborescence de travail ont été supprimés, mais il mettra également en scène le nouveau contenu modifié des fichiers suivis.
... d'autre part ne rm que les fichiers supprimés qui ont été suivis.
Donc, ce dernier est à mon avis la meilleure option.
la source
Si ce sont les seuls changements, vous pouvez simplement faire
pour valider toutes les modifications. Cela comprendra les fichiers supprimés.
la source
est la meilleure option pour ajouter uniquement des fichiers supprimés.
Voici quelques autres options.
la source
git add -u
-u --update Correspond uniquement aux fichiers déjà suivis dans l'index plutôt qu'à l'arborescence de travail. Cela signifie qu'il ne mettra jamais en scène de nouveaux fichiers, mais qu'il mettra en scène les nouveaux contenus modifiés des fichiers suivis et qu'il supprimera les fichiers de l'index si les fichiers correspondants dans l'arborescence de travail ont été supprimés.
Si non est donné, par défaut à "."; en d'autres termes, mettez à jour tous les fichiers suivis dans le répertoire actuel et ses sous-répertoires.
la source
git add -u
. D'où viennent tous les autres éléments de votre réponse, la documentation? Vous devez créer un lien vers la documentation et la citer dans le cas contraire.Cette solution simple fonctionne bien pour moi:
la source
Si vous souhaitez l'ajouter à votre,
.gitconfig
procédez comme suit:Il ne vous reste plus qu'à exécuter:
la source
git config --global alias.rmd '!git ls-files --deleted -z | xargs -0 git rm'
Cela supprimera tous les fichiers supprimés qui ont été suivis précédemment par git, ainsi que le cas où vos noms de fichiers contiennent des espaces.
En fonction de votre variante POSIX, vous devrez peut-être utiliser
xargs -0 -r
: cela entraînera laxargs
fermeture progressive du contenu nul canalisé.EDIT:
--cached
et les--deleted
drapeaux sont utilisés en tandem pour éviter la suppression accidentelle de fichiers qui n'ont pas déjà été supprimés.la source
Dites à la commande de mettre automatiquement en scène les fichiers qui ont été modifiés et supprimés, mais les nouveaux fichiers dont vous n'avez pas parlé à Git ne sont pas affectés:
ou
la source
Les éléments suivants fonctionneront, même si vous avez beaucoup de fichiers à traiter:
Vous voudrez probablement aussi vous engager avec un commentaire.
Pour plus de détails, voir: Scripts Git utiles
la source
Veuillez utiliser
-t
pour voir quelle commande est réellement exécutéeJe viens de modifier la réponse de Virender pour faire de même:
la source
Aucun des drapeaux à git-add ne mettra en scène que les fichiers supprimés; si tout ce que vous avez modifié sont des fichiers supprimés, alors tout va bien, mais sinon, vous devez exécuter git-status et analyser la sortie.
En partant de la réponse de Jeremy, voici ce que j'ai obtenu:
grep -v
lignes.git rm
.Coller cela dans un alias de shell maintenant ...
la source
Comme mentionné
étapes les fichiers supprimés pour la suppression, MAIS AUSSI les fichiers modifiés pour la mise à jour.
Pour décompresser les fichiers modifiés, vous pouvez le faire
si vous aimez garder vos commits organisés et propres.
REMARQUE: cela pourrait également supprimer les fichiers supprimés, donc soyez prudent avec ces caractères génériques.
la source
Cela a fonctionné pour moi après avoir déjà supprimé les fichiers.
la source
J'avais besoin du même bouton et j'ai utilisé le bouton "stage change". il ajoute également tout.
Et après que "l'étape ait changé", j'ai fait "commit" ...
donc mon répertoire de travail est à nouveau propre.
la source
Supprime tous les fichiers répertoriés par la
git ls-files
commande (-d affiche uniquement les fichiers supprimés). Ne fonctionne pas pour les fichiers avec des espaces dans le nom de fichier ou le chemin d'accès, mais simple à retenirla source
Vous pouvez utiliser
git add -u <filenames>
pour mettre en scène les fichiers supprimés uniquement.Par exemple, si vous avez supprimé les fichiers
templates/*.tpl
, utilisezgit add -u templates/*.tpl
.Le
-u
est requis pour faire référence aux fichiers qui existent dans le référentiel mais qui n'existent plus dans le répertoire de travail. Sinon, la valeur par défautgit add
est de rechercher les fichiers dans le répertoire de travail et si vous spécifiez des fichiers que vous avez supprimés, il ne les trouvera pas.la source
Ajout d'alias système pour le transfert des fichiers supprimés en tant que commande
rm-all
UNIX
alias rm-all='git rm $(git ls-files --deleted)'
LES FENÊTRES
doskey rm-all=bash -c "git rm $(git ls-files --deleted)"
Remarque
Windows doit avoir
bash
installé.la source
(Encore une autre variation)
Je voulais supprimer tous les fichiers déjà supprimés du disque, mais d'un dossier spécifique, en laissant les autres dossiers intacts. Ce qui suit a fonctionné pour moi:
la source
quelque chose comme
peut le faire.
la source
git diff --diff-filter=D --name-only | xargs git rm
Pour projet de studio visuel
ce qui est utile lorsque le chemin du fichier supprimé a de l'espace
la source
La solution la plus flexible que j'ai trouvée à ce jour consiste à
Et sélectionnez tous les fichiers supprimés que je veux mettre en scène.
(Notez que je fais généralement tout en ligne de commande dans git, mais git gère les fichiers supprimés un peu maladroitement).
la source
git add -u path/to/my/deleted-files-pattern-*.yml
, c'était donc la meilleure réponse pour moi (ne voulant pas mettre en scène tous les fichiers supprimés, mais 50 sur quelques centaines).