track remote example and git branch git-checkout

remote - git commit



Git: "Actualmente no está en ninguna sucursal". ¿Hay alguna manera fácil de volver a una sucursal, mientras se mantienen los cambios? (8)

Así que hice un trabajo en el repositorio y cuando estoy a punto de comprometerme, me doy cuenta de que no estoy actualmente en ninguna rama.

Esto sucede mucho cuando se trabaja con submódulos y puedo resolverlo, pero el proceso es tedioso y he pensado que debe haber una manera más fácil de hacerlo.

¿Hay una forma fácil de volver a una sucursal, mientras se mantienen los cambios?


De forma alternativa, puede configurar sus submódulos para que, en lugar de estar en su estado de cabecera desconectada, pueda extraer una rama.

Editado para agregar:

Una forma es verificar una rama particular del submódulo cuando lo agrega con el indicador -b:

git submodule add -b master <remote-repo> <path-to-add-it-to>

Otra forma es ir al directorio de submódulos y simplemente verificarlo

git checkout master


El siguiente método puede funcionar:

git rebase HEAD master git checkout master

Esto reestablecerá tus cambios HEAD actuales sobre el maestro. Entonces puedes cambiar la rama.

Una forma alternativa es verificar primero la rama:

git checkout master

Entonces, Git debería mostrar SHA1 de tus commit separados, entonces puedes seleccionarlos, por ejemplo

git cherry-pick YOURSHA1

O también puede combinar la última:

git merge YOURSHA1

Para ver todas tus confirmaciones de diferentes ramas (para asegurarte de que las tienes), ejecuta: git reflog .


Recientemente me encontré con este problema de nuevo. Ha pasado un tiempo desde la última vez que trabajé con submódulos y, después de haber aprendido más sobre git, me di cuenta de que basta con echar un vistazo a la rama en la que desea comprometerse. Git mantendrá el árbol de trabajo incluso si no lo escondes.

git checkout existing_branch_name

Si quieres trabajar en una nueva sucursal, esto debería funcionar para ti:

git checkout -b new_branch_name

El proceso de pago fallará si tiene conflictos en el árbol de trabajo, pero eso debería ser bastante inusual y, si sucede, puede esconderlo, abrirlo y resolver el conflicto.

En comparación con la respuesta aceptada, esta respuesta le ahorrará la ejecución de dos comandos, que en realidad no toman tanto tiempo para ejecutarse de todos modos. Por lo tanto, no aceptaré esta respuesta, a menos que reciba milagrosamente más votos ascendentes (o al menos cercanos) que la respuesta actualmente aceptada.


Sé que le dije a Babay en 2012 que pensaba que era poco probable que alguien no se diera cuenta de que no estaban en una sucursal y se comprometieran. Esto me pasó a mí, así que supongo que tengo que admitir que estaba equivocado, pero teniendo en cuenta que me llevó hasta 2016 que esto me pasara, podrías argumentar que, de hecho, es poco probable.

De todos modos, la creación de una nueva sucursal es excesiva en mi opinión. Todo lo que tienes que hacer es:

git checkout some-branch git merge commit-sha

Si no copió el commit-sha antes de verificar la otra rama, puede encontrarlo fácilmente ejecutando:

git reflog


Saliendo de otra manera aquí

git branch newbranch git checkout master git merge newbranch


Si no has cometido:

git stash git checkout some-branch git stash pop

Si se ha comprometido y no ha cambiado nada desde entonces:

git log --oneline -n1 # this will give you the SHA git checkout some-branch git merge ${commit-sha}

Si has cometido y luego has hecho un trabajo extra:

git stash git log --oneline -n1 # this will give you the SHA git checkout some-branch git merge ${commit-sha} git stash pop


esto me ayudó

git checkout -b newbranch git checkout master git merge newbranch git branch -d newbranch


git checkout master

Ese es el resultado algo como esto:

Warning: you are leaving 2 commits behind, not connected to any of your branches: 1e7822f readme 0116b5b returned to clean django If you want to keep them by creating a new branch, this may be a good time to do so with: git branch new_branch_name 1e7822f25e376d6a1182bb86a0adf3a774920e1e

Hagamoslo:

git merge 1e7822f25e376d6a1182bb86a0adf3a774920e1e