Git 彻底删除文件?
習慣沉默
習慣沉默 2017-05-02 09:47:07
0
7
571
git add b.txt
rm b.txt
git commit -m '删除b.txt文件'

我执行了第三行commit之后提示

On branch master
Changes not staged for commit:
        deleted:    b.txt

no changes added to commit

然后我再git checkout -- b.txt 还能恢复到暂存区?为什么没有彻底删除掉?

習慣沉默
習慣沉默

répondre à tous(7)
PHPzhong

Un débutant. . . Écrivez quelques tutoriels. . . . .

En principe, git dispose de trois emplacements différents pour enregistrer les fichiers localement.

  1. Arbre de travail : Ceci représente tous les fichiers et dossiers que vous pouvez voir

  2. index : Ceci est en fait enregistré dans le dossier .git comme le référentiel suivant (le format de sauvegarde ne sera pas abordé ici)

  3. Dépôt : enregistre toutes les versions soumises.

Une fois que tout est validé, les dernières validations dans le WorkingTree, la zone d'index et le référentiel sont exactement les mêmes.

git add signifie remplacer/mettre à jour les fichiers de la zone d'index par les fichiers du WorkingTree. Par conséquent, après git add b.txt, le fichier b.txt dans l'index est mis à jour avec le b.txt actuellement enregistré.

rm b.txt n'est qu'une commande Linux, ce qui signifie supprimer des fichiers. Pour git, cela supprime simplement b.txt dans le WorkingTree.

git commit signifie regrouper les fichiers dans un index et les placer dans le référentiel. Puisque b.txt est toujours dans la zone d'index à ce moment-là, git commit mettra toujours à jour b.txt vers le référentiel.

Changes not staged for commit:
        deleted:    b.txt

Cela montre la différence entre le WorkingTree actuel et la zone d'index :
Le b.txt fichier a été supprimé du WorkingTree actuel, mais le fichier existe toujours dans l'index.

no changes added to commit

Cette invite doit être considérée comme un avertissement, car git commit signifie regrouper le contenu de la zone d'index dans le référentiel. Cependant, comme il a été validé auparavant et qu'aucune nouvelle chose n'a été ajoutée, le contenu du. la zone d'index est la même que les dernières. Le commit est le même, git n'a pas besoin de le sauvegarder à nouveau, il affiche donc "Rien à valider"

git rm La signification de cette commande est de supprimer un certain fichier de la zone d'index et de WorkingTree, donc après git rm b.txt il n'y aura plus de b.txt dans l'index. C'est tout

git checkout <branch> signifie mettre à jour le contenu du WorkingTree et de la zone d'index avec le dernier commit de la branche. Puisqu'elle est irréversible, cette commande donnera une invite si le contenu de ces deux endroits n'a pas été soumis au référentiel.
git checkout -- filename signifie remplacer un fichier dans WorkingTree par le contenu de la zone d'index. -- est facultatif, indiquant que tout ce qui suit ce paramètre est le nom du fichier. (Car parfois la branche/Tag peut avoir le même nom que le fichier)

Une commande supplémentaire est incluse. . .
git status Cela signifie montrer la différence entre WorkingTree et la zone d'index (la valeur par défaut est rouge), et la différence entre l'index et la dernière version soumise (la valeur par défaut est verte ? Vert foncé ?). De plus, il y aura des conseils sur la façon de se mettre à jour entre eux.

为情所困

essayez git rm filename

巴扎黑

Le questionneur doit d'abord savoir pourquoi git a besoin de l'opération d'ajout. Parce que git n'a que la ligne de commande au début, l'opération d'ajout est équivalente à l'opération de sélection de fichier sous l'interface graphique, donc les opérations d'ajout et de validation doivent être prises en compte. dans son ensemble (c'est-à-dire comme sélectionner le fichier sous l'interface graphique et le soumettre), il ne doit pas être séparé.

滿天的星座

1.git add b.txt //Ajouter b.txt de l'espace de travail à la zone de préparation (stage)
2.rm b.txt //Supprimer b.txt dans l'espace de travail, mais non exécuté git rm b.txt supprime le fichier du référentiel
3. git commit -m 'Delete b.txt file' // Puisque git rm b.txt n'est pas exécuté, commit soumet uniquement le contenu en 1
--&gt ;Vous devez exécuter git rm b.txt entre 2 et 3 pour supprimer le fichier

阿神

Je voudrais vous rappeler que la modification des noms de fichiers et la suppression de fichiers dans git sont presque les mêmes. Comme mentionné ci-dessus, vous devez utiliser les commandes git rm et git mv pour fonctionner séparément. Il existe un livre appelé le guide faisant autorité. à git. Vous pouvez jeter un bon oeil

巴扎黑

. Supprimer des fichiers :
Supprimer un fichier dans l'espace de travail, nom de fichier rm
Il existe deux situations :
La première situation : le fichier doit également être supprimé dans le référentiel.
 nom du fichier git rm
 git commit -m 'Description'
 Deuxième cas : supprimer accidentellement le fichier
git checkout -- nom du fichier

巴扎黑

Ajout d'un git rm de moins devant

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal