Question

Pour diverses raisons (révision du code la plupart du temps) je dois passer de la branche de développement actuel à d'autres branches assez souvent.

À l'heure actuelle, j'utilise soit « git stash » à l'écart les modifications non validées, la caisse autre branche, puis revenez et faire « git stash appliquer »

Cependant, parfois j'aurais des fichiers récemment ajoutés là-bas, qui ne sont pas suivis. Malheureusement, Stashing ne les affecte pas. Dans ce cas, je dois les ajouter à l'index et Stash.

Ce que je suis à la recherche est ici pour un flux de travail où je dois effectuer un ensemble minimal d'actions pour changer les branches, de préférence en évitant l'ajout de fichiers dans l'index.

Était-ce utile?

La solution

vous pouvez cloner le repo à un autre répertoire et par défaut à la branche que vous voulez:

# assume your original repo is in myproj
$ git clone myproj myproj_clone --branch my_branch

Si vous allez ensuite dans le dossier myproj_clone, ce sera dans votre branche

$ cd myproj_clone
$ git branch
* my_branch

Autres conseils

Vous pouvez cloner le dépôt et l'examen / travail sur le clone. Supprimez le clone lorsque vous avez terminé. Si vous ne vous arrive de faire des changements sur la branche / clone, vous pouvez les repousser. Je pense qu'un clone local ne coûte pas cher. Et même si ce n'était pas, l'espace disque est encore moins cher que votre temps.

Je ne suis pas sûr que le clonage est la bonne solution, mais puisque 2 réponses proposent que ce soit sur le cerveau, donc je propose une modification sur ce thème. le clonage peut ne pas être pas cher. En termes de l'espace disque, il est hors de propos, mais le clone lui-même faire prendre quelques secondes et qui est trop de temps à perdre une opération inutile. Comme alternative, vous pouvez simplement créer un nouveau répertoire de travail en utilisant l'ancien travail git dir. par exemple, si votre répertoire de travail courant est « un » (avec les changements et les fichiers non mis en scène), essayez:

$ mkdir ../b
$ cd ../b
$ echo 'gitdir: ../a/.git' > .git
$ git checkout -f foo

b est effectivement un clone d'un, sur la branche foo, et vous avez deux répertoires de travail pour jouer avec. Faites ce que vous devez sur la branche foo dans le travail dir b, puis revenir à un et extrayez de la branche que vous étiez lorsque vous avez quitté.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top