una tag remota rama pasar otra example crear cambios cambiar git git-checkout

remota - git tag



¿El git checkout master no cambia la rama-el repositorio está roto? (4)

He visto algo similar cuando hay una carpeta maestra en el árbol de origen. Desafortunadamente, no encontré una forma de decirle a git que interpretara el valor como una rama. Cambiar el nombre de la carpeta solucionó el problema para mí.

tl; dr : git checkout master no cambia a la rama maestra, no da ningún error ni resultado alguno y no tengo ni idea de por qué. Cualquier otra rama funciona bien.

Tengo un repositorio de git que consiste en el development y master sucursales. Hago un clon nuevo del repositorio, verificando el desarrollo de sucursales como predeterminado.

$ git clone <REPO-URL> --branch development $ git branch -a * development origin/HEAD -> origin/development origin/development origin/master $ git show-ref 656c781c2affc26792f857baf8e232de07101535 refs/heads/development 656c781c2affc26792f857baf8e232de07101535 refs/remotes/origin/HEAD 656c781c2affc26792f857baf8e232de07101535 refs/remotes/origin/development cfee1a1761642453edf5d001565f23b50243ff09 refs/remotes/origin/master

El maestro de referencia al que apunta es correcto, ese compromiso existe y es el último compromiso de mi rama maestra.

Hasta ahora todo parece normal, pero cuando trato de cambiar a dominar esto está sucediendo:

$ git checkout master $ git branch * development

No hay mensaje de pago, no hay error, nada, y la rama no se cambia.

Cosas que he probado hasta ahora:

  • Crear una segunda rama master2 desde el mismo commit => checkout funciona bien.
  • Eliminar y volver a crear el maestro de sucursal tanto local como en origen => nuevamente, no es posible realizar la extracción
  • git checkout -b master --track origin/master => funciona, pero creo que no debería ser necesario usar este comando ya que esto es lo que git checkout master debería hacer automáticamente
  • Comprometerse y presionar para dominar las obras, pero no cambia el problema de pago
  • Probé varias versiones de git (1.9, 2.2) y máquinas (linux, windows), el problema ocurre en todas partes.

¿Alguna idea más? ¿Qué me estoy perdiendo? ¿Está roto mi repositorio? ¿Cómo puedo arreglar esto?


La rama maestra local en su repositorio no es diferente de cualquier otra rama local en su repositorio. Ha clonado su repositorio a su rama de desarrollo, que es la única rama local que tiene. Por lo tanto, si intenta realizar el pago a su sucursal maestra local, git dice que no existe.

Si desea que tanto el desarrollo como el dominio de la sucursal local sean iguales, puede hacer una de estas cosas:

Descargue su repositorio a la rama maestra y cree una rama de desarrollo local:

git clone <repo_url> git checkout -b development

o descargue su repositorio a la rama de desarrollo, y cree una rama maestra local:

git clone <REPO-URL> --branch development git checkout -b master


La respuesta aceptada (renombrar la carpeta) funciona. Si no quieres hacer eso, aquí hay una git version 2.14.1.windows.1 que probé en la git version 2.14.1.windows.1 .

Eliminar la carpeta ofensiva.

ejecuta git branch <the branch you had trouble switching to>

realizar git branch <your original branch>

realizar git checkout -- . para deshacer la eliminación.

Ahora puede cambiar hacia y desde la rama deseada sin problema, incluso con una carpeta en el repositorio que tenga el mismo nombre que una rama. Notará que la rama aparece en la lista de sucursales si realiza git branch


Si su repositorio tiene una carpeta o nombre de archivo igual que un nombre de rama, entonces deberá: git checkout xyz -- con el extra -- al final. Le dice a git que use una rama o confirmación en lugar de tratar de usar una carpeta / nombre de archivo.

Encontré la respuesta en otra publicación de : Git cambiar rama cuando el archivo del mismo nombre está presente