44 votes

Les fichiers modifiés dans une branche git débordent dans une autre branche

Je suis en train de travailler sur un dépôt git avec une branche master et d'une autre rubrique de la branche. J'ai changé le thème de la branche et modifié un fichier. Maintenant, si je suis passé à la branche principale, ce même fichier est montré tel que modifié.

Par exemple:

git status dans git-construction de la branche:

# On branch git-build
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   cvsup_current
#

Passer à la branche principale

[root@redbull builder_scripts (git-build)]# git co master
M       builder_scripts/cvsup_current
Switched to branch "master"

git status dans la branche principale

[root@redbull builder_scripts (master)]# git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   cvsup_current
#

Pourquoi est-ce que le fichier est montré tel que modifié dans la branche principale, même si elle a été modifiée en git-construction de la branche?

Ma compréhension est que les branches sont indépendants les uns des autres et lorsque je passe d'une branche à l'autre, les changements ne sont pas "déborder" à partir d'une branche à l'autre. Donc, je suis évidemment manque quelque chose ici.

Quelqu'un a une idée de bâton?

59voto

Gareth Points 42402

La clé à retenir est que le fichier n'a pas été modifié dans la branche git-build. Cela n'a été modifié que dans votre copie de travail.

Ce n'est que lorsque vous validez que les modifications sont remises dans la branche que vous avez empruntée.

39voto

Peter Burns Points 17420

Si vous souhaitez stocker temporairement vos modifications dans une branche avant de commencer à travailler sur une autre, vous pouvez utiliser la commande git stash . C'est l'un des incroyables petits avantages méconnus d'utiliser Git. Exemple de flux de travail:

 git stash #work saved
git checkout master
#edit files
git commit
git checkout git-build
git stash apply #restore earlier work
 

git stash stocke une pile de modifications afin que vous puissiez stocker en toute sécurité plusieurs points de contrôle. Vous pouvez également leur donner des noms / descriptions. Information d'utilisation complète ici .

12voto

Marko Points 13736

C'est le comportement par défaut de git.

Vous pouvez utiliser l' option -f à la caisse pour effectuer une "extraction en caisse" si vous le souhaitez.

9voto

Greg Hewgill Points 356191

Les fichiers modifiés ne sont pas placés dans le référentiel tant que vous ne les avez pas ajoutés et validés. Si vous revenez à votre branche de sujet et validez le fichier, il n'apparaîtra pas sur la branche principale.

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: