107 votes

Pourquoi git continue d'afficher mes modifications lorsque je change de branche (fichiers modifiés, ajoutés ou supprimés), que je lance ou non git add?

Je suis vraiment nouveau à git et j'ai essayé de comprendre pourquoi git continue de s'afficher ce que j'ai changé dans une branche dans une autre branche, quand je lance la commande git checkout pour basculer entre les branches j'ai d'Abord essayé de ne pas utiliser la commande git add et n'a pas de travail. Cependant, j'ai essayé ensuite à l'aide de git add, mais n'a pas de résoudre le problème. Je ne suis pas en utilisant git commit encore.

C'est en gros ce que je fais:

$ git clone <a_repository>  
$ git branch  
* master  
$ git branch testing  
$ git checkout testing  
...edit a file, add a new one, delete...  
$ git status  
    # On branch testing  
    # Changed but not updated:  
    #   (use "git add/rm <file>..." to update what will be committed)  
    #   (use "git checkout -- <file>..." to discard changes in working directory)  
    #  
    #       deleted:    file1.txt  
    #  
    # Untracked files:  
    #   (use "git add <file>..." to include in what will be committed)  
    #  
    #       file2.txt  
no changes added to commit (use "git add" and/or "git commit -a")  
$ git branch  
  master  
* testing  
$ git checkout master  
D       file1.txt  
Switched to branch 'master'  
$ git status  
    # On branch master  
    # Changed but not updated:  
    #   (use "git add/rm <file>..." to update what will be committed)  
    #   (use "git checkout -- <file>..." to discard changes in working directory)  
    #  
    #       deleted:    file1.txt  
    #  
    # Untracked files:  
    #   (use "git add <file>..." to include in what will be committed)  
    #  
    #       file2.txt  
no changes added to commit (use "git add" and/or "git commit -a")  

J'ai pensé que, bien que l'utilisation de branches, quoi que vous fassiez dans une branche, il est invisible pour tous les autres branches. N'est pas que la raison de la création de branches?

J'ai essayé d'utiliser "git add" mais les modifications sont visibles dans les deux branches. Dois-je exécuter "git commit" avant de passer entre les branches pour éviter cela?

130voto

Sean Clark Hess Points 3703

Changer de branche entraîne des modifications non engagées avec vous. Commettez d'abord, exécutez git checkout . pour les annuler, ou exécutez git stash avant de passer. (Vous pouvez récupérer vos modifications avec git stash apply )

29voto

Jefromi Points 127932

Réponse courte: oui, vous devez vous engager. Assurez-vous de le faire sur la branche de droite, si!

Une branche est un pointeur vers un commit. Lorsque vous vous engagez avec une branche d'extraction, la direction générale des avances à point à qui nouveau commit. Lorsque vous découvrez une direction générale, vous êtes à la vérification de la commettre. (Vous pouvez penser s'engage comme des instantanés de votre travail à l'arbre.)

Donc, si vous avez des modifications, vous n'avez pas commis, ils vont pas être affectée par la commutation des branches. Bien sûr, si le passage des branches est incompatible avec vos modifications, git checkout vont tout simplement refuser de le faire.

git add est une commande pour la mise en scène des changements, ce qui vous permettra de vous engager. Il n'enregistre pas ces changements dans l'histoire du référentiel. Simplement, il les place dans une zone de transit (l'index); git commit utilise ensuite le contenu de la zone de transit pour créer engage.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by: