Je suis vraiment nouveau dans git et j'ai essayé de comprendre pourquoi git continue d'afficher tout ce que j'ai changé dans une branche d'une autre branche lorsque j'exécute git checkout pour basculer entre les branches J'ai d'abord essayé de ne pas utiliser git add et je n'ai pas fonctionné. Cependant, j'ai essayé d'utiliser git add, mais je n'ai pas résolu le problème. Je n'utilise pas encore git commit.
C'est essentiellement 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")
Je pensais que tout en utilisant des branches, quoi que vous fassiez dans une branche, c'était invisible pour toutes les autres branches. N'est-ce pas la raison de la création de succursales?
J'ai essayé d'utiliser "git add" mais les changements sont visibles dans les deux branches. Dois-je exécuter "git commit" avant de basculer entre les branches pour éviter cela?
git add
les stocker avant de les ranger. Cela dit, je ne suis pas sûr que vous souhaitiez réellement vous cacher ici - si vous avez l'intention que ces changements fassent partie de la branche dont vous vous éloignez, validez-les. (Si vous avez l'intention de revenir à cette branche et de travailler davantage sur les changements avant de les valider, alorsstash
peut-être le bon outil pour le travail.)Réponse courte: oui, vous devez vous engager. Assurez-vous de le faire sur la bonne branche, cependant!
Une branche est un pointeur vers un commit. Lorsque vous vous engagez avec une branche extraite, la branche avance pour pointer vers cette nouvelle validation. Lorsque vous extrayez une branche, vous vérifiez le commit vers lequel elle pointe. (Vous pouvez considérer les commits comme des instantanés de votre arbre de travail.)
Donc, si vous avez des modifications que vous n'avez pas validées, elles ne seront pas affectées par le changement de branche. Bien sûr, si le changement de branche est incompatible avec vos modifications,
git checkout
refusera simplement de le faire.git add
est une commande de préparation des modifications, que vous validerez ensuite. Il n'enregistre pas ces modifications dans l'historique du référentiel. Il les place simplement dans une zone de transit (l'index);git commit
utilise ensuite le contenu de cette zone de préparation pour créer des validations.la source