recherche

Maison  >  Questions et réponses  >  le corps du texte

Git supprime complètement les fichiers ?

git add b.txt
rm b.txt
git commit -m '删除b.txt文件'

J'ai exécuté la troisième ligne commit puis l'invite

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

no changes added to commit

Alors si je git checkout -- b.txt puis-je quand même le restaurer dans la zone de transit ? Pourquoi n'a-t-il pas été complètement supprimé ?

習慣沉默習慣沉默2803 Il y a quelques jours602

répondre à tous(7)je répondrai

  • PHPz

    PHPz2017-05-02 09:49:07

    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.

    répondre
    0
  • 为情所困

    为情所困2017-05-02 09:49:07

    essayez git rm filename

    répondre
    0
  • 巴扎黑

    巴扎黑2017-05-02 09:49:07

    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é.

    répondre
    0
  • 滿天的星座

    滿天的星座2017-05-02 09:49:07

    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
    --> ;Vous devez exécuter git rm b.txt entre 2 et 3 pour supprimer le fichier

    répondre
    0
  • 阿神

    阿神2017-05-02 09:49:07

    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

    répondre
    0
  • 巴扎黑

    巴扎黑2017-05-02 09:49:07

    . 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

    répondre
    0
  • 巴扎黑

    巴扎黑2017-05-02 09:49:07

    Ajout d'un git rm de moins devant

    répondre
    0
  • Annulerrépondre