/ / Lorsque vous passez d'une branche à une autre, la branche cible est-elle supposée hériter de l'index et des fichiers modifiés? - git

Lorsque vous passez d'une branche à une autre, la branche cible est-elle censée hériter de l'index et des fichiers modifiés? - git

Dans Git, j'ai une branche expérimentale (EXP-12). J'ai fait quelques changements ici, mais je ne suis pas encore prêt à m'engager. J'ai besoin de faire des ajustements sur master.

Je vais au maître.

Deux cas sont possibles:

  1. Si j'ai inclus mes modifications dans l'index pendant EXP-12, ils apparaîtront également dans l’index de la branche master.
  2. Si je n’ai pas inclus mes modifications dans l’index pendant EXP-12, ces fichiers apparaîtront également comme des modifications non effectuées pour la validation sur la branche principale.

Mon problème est que je veux tout sur maître et EXP-12 être séparé. Je veux faire des changements "expérimentaux" sur EXP-12 > aller au maître> faire des changements sur le maître> tout mettre en scène pour le commit (git add -A)> commit> revenez à EXP-12 et poursuivez les expériences. Maintenant, si je le fais, ma validation à la branche maître inclura toutes les modifications effectuées sur EXP-12.

Quelle est la logique derrière cela? Ou est-ce que je manque quelque chose?

Réponses:

0 pour la réponse № 1

Une solution classique à ce problème consiste à utiliser git stash - quand tu es " EXP-12 tu peux faire:

git stash save --keep-index "Some work-in-progress on EXP-12"

... puis changez de branche en maître comme d'habitude, effectuez quelques tâches, changez de version et appliquez le cachet le plus récent:

git checkout master

[... do some stuff ...]

git checkout EXP-12

git stash pop

Cependant, je préfère personnellement créer un commit en-cours, puis plus tard:

  • Le changer avec git commit --amend
  • Ramenez la branche au commit précédent, mais laissez tout votre travail en tant que modifications non mises en scène avec: git reset HEAD^
  • ... Ou utiliser git rebase -i <EARLIER-COMMIT> pour écraser plusieurs travaux en cours.

L’avantage de créer un commit réel surL'utilisation de la cachette signifie que vous pouvez appliquer une cachette sur n'importe quel commit, pas seulement celui sur lequel vous l'avez enregistré, alors qu'un commit normal avance vers cette branche et est lié aux validations précédentes.