Cette question est similaire à celle-ci , mais plus spécifique.
J'ai un projet avec deux branches ( staging
et beta
).
Je développe staging
et utilise la master
branche pour corriger les bugs. Donc, si je travaille sur la mise en scène et que je vois une erreur, je passe à la master
branche:
git checkout master
et faites le truc:
git add fileToAdd
git commit -m "bug fixed"
puis je fusionne avec les deux branches:
git checkout staging
git merge master
git checkout beta
git merge beta
Et peu importe s'il y a d'autres fichiers dans l'arborescence de travail.
Mais maintenant, lorsque j'essaye de passer à la master
branche, j'obtiens une erreur :
error: Your local changes to the following files would be overwritten by checkout:
src/Pro/ConvocationBundle/Controller/DefaultController.php
Please, commit your changes or stash them before you can switch branches.
Aborting
J'ai pensé que je devais supprimer le fichier de la zone de préparation:
git reset HEAD src/Pro/ConvocationBundle/Controller/DefaultController.php
mais j'obtiens la même erreur. Si git status
je reçoisNo changes to commit
git
git-checkout
Manolo
la source
la source
reset --hard
? Si vous êtes vraiment sûr de vouloir annuler vos modifications. Ou utilisez la réserve si vous ne le faites pas.git add your-file
engager.staging
moment.Réponses:
Votre erreur apparaît lorsque vous avez modifié un fichier et que la branche vers laquelle vous basculez a également des modifications pour ce fichier (à partir du dernier point de fusion).
Vos options, comme je le vois, sont - commit, puis modifiez ce commit avec des changements supplémentaires (vous pouvez modifier les commits dans git, tant qu'ils ne sont pas
push
édités); ou - utilisez le stash:git stash save
créera un stash contenant vos modifications, mais il n'est associé à aucun commit ni même à une branche.git stash pop
appliquera la dernière entrée de cache à votre branche actuelle, en restaurant les modifications enregistrées et en la supprimant de la cache.la source
add
lorsqu’il est effectivementsave
.. Vous voulez dire, pour d'autres fichiers?git stash save
sans paramètre de nom de fichier enregistre tous les fichiers modifiés, si vous le souhaitez (et les rétablit au dernier état de validation). Et avoir une copie supplémentaire de l'arborescence des répertoires ne fait jamais de mal, mais je suis toujours paranoïaque à ce sujet.master
branche. En outre, une option seraitpop
les changements sur une autre branche?master
, mais ce faisant, il perdra son contenu actuel, et comme ce contenu n'est pas validé, il serait impossible de revenir à cet état plus tard, d'où une erreur. ne serait pas contrarié par les modifications perdues plus tard.J'ai rencontré le même problème et je l'ai résolu en
et sa spécification est assez claire.
la source
Vous pouvez forcer l'extraction de votre branche, si vous ne souhaitez pas valider vos modifications locales.
la source
sudo
n'est pas nécessaire, cela ne fera que briser les autorisations de fichier. C'est la même commande git que celle publiée par @kiki_yu un an auparavant, mais c'est encore pire.Eh bien, soyez prudent avec le
-f
commutateur. Vous perdrez toutes les modifications non validées si vous utilisez le-f
commutateur. Bien qu'il puisse y avoir des cas d'utilisation où il est utile d'utiliser-f
, dans la plupart des cas, vous voudrez peut-êtrestash
vos modifications, puis lesswitch
branches. Lastashing
procédure est expliquée ci-dessus.la source
Vous pouvez valider dans la branche actuelle, extraire vers une autre branche et enfin sélectionner ce commit (au lieu de fusionner).
la source
Si vous obtenez ceci en essayant de vérifier une autre branche:
Cela signifie que vous devez valider certaines modifications sur la branche que vous avez extraite - ou que vous devez les effacer ou les cacher comme la plupart des points ci-dessus. 19 fois sur 20, je suis beaucoup plus susceptible de simplement valider mes changements.
Maintenant que vous avez fait cela, vous pouvez consulter l'autre branche et basculer assez facilement.
Assurez-vous simplement que vous êtes tous les deux sur la bonne branche et que vous poussez vers la bonne branche lorsque vous exécutez votre commande git push origin $ {branch}. Remarque: si votre projet est directement connecté à Intellij, vous pouvez voir que vous avez changé de branche dans le coin inférieur droit de la fenêtre principale.
la source