Esto a menudo me pasa a mí: escribo un código, reviso mis cambios y luego me doy cuenta de que no estoy en la rama correcta para verificar esos cambios. Sin embargo, no puedo cambiar a otra rama sin que mis cambios se reviertan. ¿Hay alguna manera de mover los cambios a otra rama para que se verifiquen allí?mover los archivos cambiados a otra sucursal para registrar
Respuesta
git stash
es tu amigo.
Si aún no ha realizado la confirmación, simplemente ejecute git stash
. Esto guardará todos sus cambios.
Cambie a la rama en la que desea los cambios y ejecute git stash pop
.
Hay muchos usos para git stash. Esta es ciertamente una de las razones más útiles.
Un ejemplo:
# work on some code
git stash
git checkout correct-branch
git stash pop
Si aún no lo ha cometido sus cambios, sólo tiene que utilizar git checkout
para pasar a la nueva rama y luego comprometerse con normalidad - cambios en los archivos no están atados a una rama particular hasta que los comprometerse.
Si usted tiene ya se ha comprometido sus cambios:
- Tipo
git log
y recordar el SHA de la confirmación que desea mover. - Mira la rama a la que quieres mover la confirmación.
- Tipo
git cherry-pick SHA
sustituyendo el SHA de arriba. - Vuelva a la rama original.
- Use
git reset HEAD~1
para reiniciar antes de que se comprometa la rama incorrecta.
cherry-pick
toma una confirmación determinada y la aplica al encabezado actualmente desprotegido, lo que le permite copiar la confirmación en una nueva sucursal.
Si desea mover los cambios en una nueva rama, esto se puede hacer con sólo dos comandos:
git stash
git stash branch new-branch
De acuerdo con la git stash documentation:
branch
<branchname> [<stash>]
Creates and checks out a new branch named
<branchname>
starting from the commit at which the<stash>
was originally created, applies the changes recorded in to the new working tree and index.
Lamentablemente, esto le sucede a m e con bastante regularidad, así y yo uso git stash
si me di cuenta de mi error antes git commit
y uso git cherry-pick
de lo contrario, se explican ambos comandos bastante bien en otras respuestas
Quiero añadir una aclaración para git checkout targetBranch
: este comando sólo preservará su directorio de trabajo y puesta en escena de instantánea si targetBranch tiene la misma historia que su rama actual
If you haven't already committed your changes, just use git checkout to move to the new branch and then commit them normally
@ declaración de Amber no es falsa, cuando se mueve a una newBranch , git checkout -b newBranch
, una nueva i puntero s creado y apunta a la misma confirmación exacta que su rama actual.
De hecho, si usted pasó a tener una otra rama que comparte la historia con su rama actual (ambos apuntan al mismo commit) puede "mover los cambios" por git checkout targetBranch
Sin embargo, por lo general diferentes ramas significa historia diferente, y Git no le permitirá cambiar entre estas ramas con un directorio de trabajo sucio o área de preparación. en cuyo caso se puede hacer ya sea git checkout -f targetBranch
(cambios limpios y desechables) o git stage
+ git checkout targetBranch
(limpia y ahorro cambios), simplemente ejecutando git checkout targetBranch
dará un error:
error: Your local changes to the following files would be overwritten by checkout: ... Please commit your changes or stash them before you switch branches. Aborting
- 1. ¿Cómo mover confirmaciones a otra sucursal?
- 2. mover todos los archivos en una carpeta a otra?
- 3. Django: Recolecte solamente los archivos estáticos cambiados
- 4. Egit muestra todos los archivos como cambiados
- 5. Mover archivos anteriores a 31 días a otra unidad
- 6. Mover archivos de una solución de Visual Studio a otra
- 7. Git Mover archivos a carpetas
- 8. Mover cambios locales en una sucursal
- 9. git marcan archivos sin cambios como cambiados
- 10. ¿Debo registrar los archivos * .mo?
- 11. Cómo encontrar el número de archivos cambiados de una confirmación a otra en git
- 12. Mover cambios de una rama a otra sin fusionar
- 13. ¿Cómo puedo mover todos los archivos de una carpeta a otra usando la línea de comando?
- 14. mover todos los archivos y carpetas en una carpeta a otra?
- 15. TFS: ¿cómo dectectar los archivos cambiados al cargar una solución?
- 16. Mover archivos a un directorio
- 17. cómo verificar solo el conjunto de archivos cambiados a subversión
- 18. git-gui: mover el foco del teclado a "archivos modificados"
- 19. Configurar una sucursal local para enviar a una sucursal específica
- 20. cómo puedo mover mi proyecto de Qt a otra PC
- 21. Mover archivos entre carpetas
- 22. Git commit style: ¿Todos los archivos cambiados a la vez o de uno en uno?
- 23. Mover svn copia de trabajo a otra computadora
- 24. ¿Cómo puedo mover un archivo a otra carpeta usando php?
- 25. Bash comando para mover solo algunos archivos?
- 26. Registrar otra empresa en el programa para desarrolladores de iOS
- 27. ¿Cómo mover atómicamente las filas de una tabla a otra?
- 28. Mover (o "Deshacer") último git confirmar área sin registrar
- 29. ¿Cómo mover todas las confirmaciones de una rama a otra?
- 30. Eficiencia de Java de mover métodos a otra clase
No es necesario que oculte cambios no confirmados, van con usted cuando verifica una sucursal. Stash es más para el almacenamiento a largo plazo de cosas temporales (cosas que quieres terminar y comprometer más tarde, pero tienes que hacer algo más en este momento). – Tekkub
Entiendo esto. Así que tengo que esconder, cambiar de rama y luego pop 'C: \ kf [develop +0 ~ 4 -0]> función de pago de git/clientes
error: Sus cambios locales a los siguientes archivos se sobrescribirán con el pago:
AspWebApp.vNext/global.asa
RestApi/Web.config
Por favor, confirme sus cambios o guárdelos antes de poder cambiar de rama.
Aborto ' – IsmailS
@Tekkub "almacenamiento a largo plazo de cosas temporales" que dice que se siente muy incómodo, otro punto para usar escondite es que lo empuja en una pila así que si no quieres que se transfiera y trabaje en otra cosa, es útil de esa manera. Sí, no tiene que hacerlo, solo se siente más limpio y tiene más control. – Atherion