Existe-t-il une commande Git (ou une courte séquence de commandes) qui effectuera les opérations suivantes en toute sécurité?
Actuellement, je suis coincé avec:
git fetch -p
git stash
git stash drop
git checkout $branch
git pull
mais ça me dérange parce qu'on me demande le mot de passe deux fois (par fetch
et pull
). En général, je serais heureux avec n'importe quelle solution tant que le mot de passe n'est requis qu'une seule fois.
Quelques notes:
Vous pourriez suivre une solution similaire à " Comment puis-je forcer“ git pull ”pour écraser les fichiers locaux? " :
git fetch --all
git reset --hard Origin/abranch
git checkout $branch
Cela impliquerait seulement un aller chercher.
Couple de points:
git stash
+ git stash drop
pourrait être remplacé par git reset --hard
... ou encore plus court, ajoutez -f
à checkout
commande:
git checkout -f -b $branch
Cela supprimera tout changement local, comme si git reset --hard
a été utilisé avant de passer à la caisse.
En ce qui concerne la question principale: au lieu de passer à la dernière étape, vous pouvez simplement fusionner la branche appropriée de la télécommande dans votre branche locale: git merge $branch Origin/$branch
, Je crois que cela ne frappe pas la télécommande. Si tel est le cas, cela élimine le besoin de crédences et, par conséquent, répond à votre plus grande préoccupation.
git reset
et git clean
peut être exagéré dans certaines situations (et être une énorme perte de temps).
Si vous avez simplement un message du type "Les fichiers non suivis suivants seraient écrasés ..." et que vous souhaitiez que la commande distante/Origine/amont écrase les fichiers non suivis en conflit, alors git checkout -f <branch>
est la meilleure option.
Si vous êtes comme moi, votre autre option consistait à nettoyer et à effectuer un --hard reset
puis recompilez votre projet.