Pregunta

Por varias razones (principalmente revisión de código), necesito cambiar de la rama de desarrollo actual a otras ramas con bastante frecuencia.

Actualmente, uso 'git stash' para archivar los cambios no confirmados, verifico otra rama, luego vuelvo y hago 'git stash apply'

Sin embargo, a veces tengo algunos archivos recién agregados allí, de los que no se realiza un seguimiento.Desafortunadamente, el ocultamiento no les afecta.En este caso, tendría que agregarlos al índice y guardarlos.

Lo que estoy buscando aquí es un flujo de trabajo en el que tendría que realizar un conjunto mínimo de acciones para cambiar las ramas, preferiblemente evitando agregar archivos al índice.

¿Fue útil?

Solución

puede clonar el repositorio a otro directorio y por defecto a la rama que desee:

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

Si a continuación, ir a la carpeta myproj_clone, va a ser en su rama

$ cd myproj_clone
$ git branch
* my_branch

Otros consejos

Se puede clonar el repositorio y la revisión / trabajo en el clon. Eliminar el clon cuando haya terminado. Si lo hace pasar a realizar cambios en la rama / clon, puede empujarlos hacia atrás. Creo que un clon local es barato. E incluso si no lo fuera, el espacio en disco es más barato que su tiempo.

No estoy seguro de que la clonación sea la solución correcta, pero como 2 respuestas proponen que está en el cerebro, ofrezco una modificación sobre ese tema.La clonación puede no ser barata.En términos de espacio en disco, es irrelevante, pero el clon en sí tarda varios segundos y es demasiado tiempo para perderlo en una operación innecesaria.Como alternativa, puedes simplemente crear un nuevo directorio de trabajo usando el antiguo directorio de trabajo de git.es decir, si su directorio de trabajo actual es "a" (con cambios y archivos no preparados), intente:

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

Ahora b es efectivamente un clon de a, en la rama foo, y tienes dos directorios de trabajo para jugar.Haga lo que necesite en la rama foo en el directorio de trabajo b, luego regrese a a y verifique la rama en la que estaba cuando se fue.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top