Empecé a trabajar en mi rama principal pensando que mi tarea sería fácil. Después de un tiempo me di cuenta de que tomaría más trabajo y quiero hacer todo este trabajo en una nueva sucursal. ¿Cómo puedo crear una nueva sucursal y llevar todos estos cambios conmigo sin ensuciar al maestro?Crear una rama de Git con los cambios actuales
Respuesta
Si aún no ha realizado ninguna confirmación, bastará con (1: bifurcación) y (3: pago).
O, en un comando: git checkout -b newBranch
Como se mencionó en la git reset
man page:
$ git branch topic/wip # (1)
$ git reset --hard HEAD~3 # (2) NOTE: use $git reset --soft HEAD~3 (explanation bellow)
$ git checkout topic/wip # (3)
- Usted ha hecho algunas confirmaciones, pero se dan cuenta que fueron prematuros a estar en el "
master
" rama. Desea continuar puliéndolos en una rama de tema, por lo que cree "topic/wip
" rama fuera de la actualHEAD
. - Rebobine la rama
master
para deshacerse de esas tres confirmaciones. - Cambie a la rama "
topic/wip
" y siga trabajando.
Nota: debido al efecto "destructiva" de un comando git reset --hard
(. Lo hace restablece el índice y el árbol de trabajo Cualquier cambio en los archivos rastreados en el árbol de trabajo desde <commit>
se descartan), prefiero vaya con a:
$ git reset --soft HEAD~3 # (2)
, para asegurarse de que no estoy perdiendo ningún archivo privado (no agregado al índice).
La opción --soft
no tocará en absoluto el archivo de índice ni el árbol de trabajo (pero restablece el encabezado a <commit>
, como lo hacen todos los modos).
Probablemente también valga la pena señalar que esto no sería una buena idea si ha asignado material temático a su rama principal en un repositorio del que extraen otras personas. O al menos, si necesita hacer un reinicio, tendrá que decirle a la gente que eso es lo que está haciendo para que las advertencias de su próxima extracción no sean demasiado impactantes. –
En realidad, todavía no hice ningún commit. Muy fácil, gracias amigo – willcodejavaforfood
Nota para futuros lectores: lea de abajo hacia arriba (o asegúrese de leer todo). 'git reset --hard' destruirá sus cambios, y si aún no están comprometidos, ¡son irrecuperables! Es posible que solo necesites 'git checkout -b ...' –
Ya que no han hecho todavía ningún commit, puede guardar todos los cambios en el escondite, crear y cambiar a una nueva rama, a continuación, hacer estallar esos cambios de nuevo en su árbol de trabajo:
git stash # save local modifications to new stash
git checkout -b topic/newbranch
git stash pop # apply stash and remove it from the stash list
o como VonC señaló 'git checkout -b newbranch' y omita el alijo – willcodejavaforfood
@will: Estaba pensando que la creación de una nueva rama sobrescribiría cualquier cambio no confirmado que tuviera, pero si este no es el caso, sí puede omitir el alijo. – Ether
Lo probé y funcionó bien, git es muy atento y no sobrescribirá ningún cambio local – willcodejavaforfood
igual declarado en esta pregunta: Git: Create a branch from unstagged/uncommited changes on master: escondite no es necesario.
sólo tiene que utilizar:
git checkout -b topic/newbranch
Cualquier trabajo no comprometida será llevado, a la nueva rama.
Si se intenta empujar obtendrá el siguiente mensaje de
fatal: La corriente de ramas de características/NEWBRANCH tiene ninguna rama aguas arriba.Para empujar la rama actual y establecer la distancia como aguas arriba, utilizar
git push --set-upstream origin feature/feature/NEWBRANCH
Sólo haz como se sugiere para crear la rama remota:
git push --set-upstream origin feature/feature/NEWBRANCH
siga estos pasos:
Crear una nueva sucursal:
git branch newfeature
Pedido nueva rama: (esto no se restablecerá su trabajo.)
git checkout newfeature
Ahora comprometen su trabajo en esta nueva rama:
git commit -s
Utilizando los pasos anteriores mantendrá su rama original limpia y no tendrá que hacer ningún 'reinicio de git --hard'.
¿Qué hacen las '-s' en el paso 3? –
@ScottBiggs No es necesario, pero es una práctica que algunas personas siguen. Es [abreviatura de "--signoff"] (https://git-scm.com/docs/git-commit) y agrega su nombre de usuario a la confirmación para que las personas futuras que miran los registros sepan que usted aprueba este compromiso. . –
Buena respuesta, pero no es necesario '-s' en el paso 3. –
Para añadir nuevos cambios a una nueva rama y empuje a distancia:
git branch branch/name
git checkout branch/name
git push origin branch/name
Muchas veces me olvide de agregar el elemento origen de empujar y conseguir confundido por qué no veo la nueva sucursal/commit en bitbucket
- 1. Poner los cambios actuales en una nueva rama de Git
- 2. Cambiar una rama después de cancelar los cambios actuales en git
- 3. Cómo comprometer mis cambios actuales a una rama diferente en git
- 4. git - diff de los cambios actuales antes de confirmar
- 5. Git: descartar todos los cambios en una rama local divergente
- 6. ¿Cómo confirmo los cambios actuales en una nueva rama usando TortoiseSVN y Subversion?
- 7. Git: obtener cambios de otra rama
- 8. ¿Cómo se relacionan los cambios de la rama actual con los cambios que se fusionan?
- 9. ¿Cómo descargar una rama con git?
- 10. Creando una rama git después de que se hayan realizado cambios en el maestro
- 11. crear una nueva rama svn con git-svn
- 12. Git: Lista de todos los cambios sin combinar en git
- 13. Git: la mejor manera de eliminar todos los cambios de un archivo determinado para una rama
- 14. SVN: mover los cambios pendientes a una nueva rama
- 15. ¿Cómo creo una nueva rama git a partir de los cambios que tengo en el árbol de trabajo?
- 16. Git: ¿Cómo crear una nueva rama desde una etiqueta?
- 17. será la creación de una rama git borrar mis cambios locales
- 18. Fusionar una rama git, mientras se excluyen los cambios en algún directorio
- 19. Administrar una rama de versión en Git
- 20. git perdido cambios ocultos
- 21. Al usar git, ¿cómo mueves algunos cambios no confirmados de una rama a otra rama en una carpeta diferente?
- 22. Crear una sucursal en Git de otra rama
- 23. ¿Cómo ejecuto git log para ver los cambios solo para una rama específica?
- 24. Git: Cómo mover los cambios desde la última confirmación a una nueva rama
- 25. ¿Cómo uso git-svn para combinar los cambios del tronco a una rama en svn?
- 26. Compare git branch con la rama porcentualizada
- 27. Git-svn: crear y empujar una nueva rama/etiqueta?
- 28. Crear rama SVN desde cambios en el tronco
- 29. ¿Cómo revertir un archivo a una versión anterior sin sobrescribir los cambios actuales?
- 30. ¿Cómo elimino una rama remota en Git?
posible duplicado de [Mueva el trabajo existente, sin compromiso a una nueva rama en Git] (http://stackoverflow.com/questions/1394797/move-existing-uncommited-work-to-a-new-branch-in -git) – Marijn
dup de http://stackoverflow.com/questions/2569459/git-create-a-branch-from-unstaged-uncommited-changes-on-master – andrej
gracias! ¡yo también! – Jonah