web-dev-qa-db-fra.com

Git crée une branche à partir du maître extrait actuel?

Il existe un dossier contrôlé par git sur un serveur où la branche principale est extraite et où toute une pile de fichiers a été modifiée et non validée. Existe-t-il un moyen de valider les modifications dans une branche distincte afin de pouvoir revenir à une version vierge?

c’est-à-dire que je veux annuler efficacement tous ces changements de personnes mais les stocker dans une autre chance afin que si cette personne souhaite leurs changements, ils peuvent basculer vers cette branche.

(Oui, je sais que ce n’est pas comme ça que git est conçu pour fonctionner mais c’est ma situation!) Toutes les idées sont très appréciées.

76
corydoras

Tout d'abord, passer à une autre branche basée dans le courant HEAD est exécuté comme suit:

git checkout -b newbranch

Commettez toutes les modifications (en supposant qu'aucun fichier ne soit ajouté, sinon git add leur):

git commit -a

Retournez à la branche master:

git checkout master

Les modifications précédemment non validées seront toutes dans la branche newbranch et le maître restera dans l'état où il était sans ces modifications.

134
CB Bailey

Cette méthode est utile:

git checkout -B <new_branch> <start point>

Où:

  • <new_branch> est votre nouvelle succursale (par exemple, my_branch)
  • <start point> est votre branche de départ (master dans votre cas)
  • -B crée une nouvelle branche à partir de <start point>, s'il existe déjà, réinitialisez-le sur (il n'échouera pas car -b quand la branche existe déjà)
  • parfois -m Il peut être utile de spécifier lorsque vous changez de branche, cela effectuera une fusion à trois voies entre la branche actuelle et le contenu de votre arbre de travail (utile pour les scripts).

Voir: man git-checkout pour plus de détails.

14
kenorb

Vous pouvez toujours cacher vos modifications.

git stash
git checkout -b bravenewmaster
git stash apply

N'oubliez pas non plus que, si vous vous commettez dans la "mauvaise" branche, vous pouvez toujours la déplacer, car celle-ci n'est qu'un pointeur vers une validation.

13