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 quegit 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