J'ai supprimé certains fichiers et l'état de git s'affiche comme ci-dessous.
J'ai commis et poussé.
GitHub affiche toujours les fichiers supprimés dans le référentiel. Comment puis-je supprimer des fichiers dans le référentiel GitHub?
# On branch master
# Changes not staged for commit:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: modules/welcome/language/english/kaimonokago_lang.php
# deleted: modules/welcome/language/french/kaimonokago_lang.php
# deleted: modules/welcome/language/german/kaimonokago_lang.php
# deleted: modules/welcome/language/norwegian/kaimonokago_lang.php
Si j'utilise git rm
, cela donne ce qui suit.
usage: git rm [options] [--] <file>...
-n, --dry-run dry run
-q, --quiet do not list removed files
--cached only remove from the index
-f, --force override the up-to-date check
-r allow recursive removal
--ignore-unmatch exit with a zero status even if nothing matched
Réponses:
met à jour toutes vos modifications
la source
Soyez très prudent
git rm .
; cela pourrait en supprimer plus que vous ne le souhaitez. Bien sûr, vous pouvez récupérer, mais il est plus simple de ne pas avoir à le faire.Le plus simple serait:
Vous ne pouvez pas utiliser de caractères génériques shell car les fichiers n'existent pas, mais vous pouvez utiliser (au moins dans Bash):
Ou considérez:
Cela prend la sortie de
git status
, n'imprime rien par défaut (sed -n
), mais sur les lignes qui commencent# deleted:
, il supprime le#
et ledeleted:
et imprime ce qui reste;xargs
rassemble les arguments et les fournit à unegit rm
commande. Cela fonctionne pour n'importe quel nombre de fichiers, quelle que soit la similitude (ou la dissemblance) des noms.la source
git diff --diff-filter=D --name-only -z | xargs -0 git rm
est une approche plus fiable que d'essayer d'analysergit status
qui est orienté utilisateur et non garanti stable sur les futures versions.git diff
(que je n'avais pas, n'ayant pas eu le besoin auparavant). Merci!git ls-files --deleted | xargs git rm
fait l'affaire pour moi.Une autre version de la réponse ByScripts est
Cela supprimera UNIQUEMENT les fichiers supprimés du git.
Il pourrait également être utilisé pour ajouter UNIQUEMENT des fichiers modifiés.
Ces commandes fonctionnent également sur gitbash pour Windows.
la source
git ls-files
statut supprimé ou modifié est si utile.'git add --update (or -u)'
sans argument de chemin d'un sous-répertoire de l'arbre changera dans Git 2.0 et ne devrait plus être utilisé. Pour ajouter du contenu pour l'arborescence entière, exécutez:git add --update :/
(ou git add -u: /) Pour restreindre la commande au répertoire en cours, exécutez:git add --update .
(ou git add -u.) Avec la version actuelle de Git, la commande est limitée à la répertoire actuelsrc/my spaced directory/myfile
. Cela peut être géré individuellement, mais comment peut-il être géré à l'aide des commandes de cette réponse?Mettez à jour toutes les modifications que vous avez apportées:
Les fichiers supprimés doivent passer de non organisé (généralement de couleur rouge) à intermédiaire (vert). Ensuite, engagez-vous à supprimer les fichiers supprimés:
la source
La meilleure solution si vous ne vous souciez pas de la mise en scène des fichiers modifiés est d'utiliser
git add -u
comme indiqué par mshameers et / ou pb2q .Si vous souhaitez simplement supprimer les fichiers supprimés, mais ne pas mettre en scène les fichiers modifiés, je pense que vous devriez utiliser l'
ls-files
argument avec l'--deleted
option (pas besoin d'utiliser l'expression régulière ou d'autres arguments / options complexes):la source
git add -A
résout ce problème ... juste au cas où quelqu'un voudrait savoir à l'avenir. vérifier la réponse ci-dessousOui,
git rm <filename>
mettra en scène l'état supprimé d'un fichier, où<filename>
pourrait être un modèle global:Ensuite, vous pouvez vous engager.
git commit -a
le fera en une seule fois, si vous le souhaitez.Vous pouvez également utiliser
git add -u
pour mettre en scène toutes les modifications, y compris tous les fichiers supprimés, puis valider.la source
git add -u
c'est exactement ce que nous recherchons - si vous effectuez de nombreuses suppressions, puis que vous souhaitez valider toutes les suppressions, cela semble être le moyen le plus simple et le plus `` standard '' (c'est-à-dire, sans globes spécifiques à la casse ou analyse complexe du shell dans xargs). Y a-t-il une raison pour laquelle nous ne voudrions pas l'utiliser, à part le fait qu'il ajoute tous les changements en même temps?Lorsque j'ai beaucoup de fichiers que j'ai supprimés qui ne sont pas mis en scène pour la validation, vous pouvez
git rm
les tous en un seul spectacle avec:Comme l'a mentionné le répondeur, soyez prudent
git rm
.la source
Essaye ça:
la source
Vous pouvez utiliser
Après avoir supprimé les fichiers manuellement.
la source
Vous pouvez créer un script shell qui supprimera tous vos fichiers lors de l'exécution:
Le script créé est
remove.sh
et contient la liste complète desgit rm
commandes.la source
la source
la source
Si vous souhaitez tous les supprimer en utilisant "git rm". C'est ce que je fais:
Cette requête répertorie tous les fichiers qui ont été supprimés et les supprime de votre référentiel git. J'espère que ça aide.
la source
La fonction propre intégrée peut également être utile ...
la source
J'ai eu ce problème de fichiers fantômes apparaissant dans mon référentiel après les avoir supprimés et rencontré cette commande soignée!
git add -A
C'est essentiellement le même que
git add -a
etgit add -u
combiné, mais il est sensible à la casse. Je l'ai obtenu à partir de ce lien génial (ce lien pointe vers la version sur archive.org maintenant, car l'original s'est converti en une page de spam / phishing en juin 2016)la source
Voici comment détecter les fichiers supprimés et organiser leur suppression dans le cadre du prochain commit. Toutes les solutions de ce fil ont des mérites différents. Cette solution ci-dessous traite spécifiquement du problème des noms de fichiers avec des espaces.
assurez-vous de tester cela avec l'option --dry-run de git avant de l'exécuter avec ce qui suit:
explication:
Cela affiche quelque chose comme D "/ chemin vers un dossier / chemin vers un fichier" qui ne se produit que lorsqu'il y a des espaces dans les noms de chemin
ne correspond qu'aux lignes commençant par "D"
supprimer "D" de l'avant de chaque chaîne
supprimer les citations, le cas échéant
définissez les variables de nom de fichier comme {} exécutez le nom de fichier sous git rm entre guillemets simples afin de vous assurer qu'il prend en charge les noms de fichier avec des espaces.
la source