Es mejor explicarlo en un ejemplo: estoy en la rama 0.58 del repositorio y así es como lo hago:
git pull origin 0.58
Cuando llamo "git pull", obtengo:
ip238:openlierox az$ git pull
You asked me to pull without telling me which branch you
want to merge with, and 'branch.0.58.merge' in
your configuration file does not tell me either. Please
name which branch you want to merge on the command line and
try again (e.g. 'git pull <repository> <refspec>').
See git-pull(1) for details on the refspec.
If you often merge with the same branch, you may want to
configure the following variables in your configuration
file:
branch.0.58.remote = <nickname>
branch.0.58.merge = <remote-ref>
remote.<nickname>.url = <url>
remote.<nickname>.fetch = <refspec>
See git-config(1) for details.
Parece que probablemente olvidé alguna opción (¿-track?) Cuando revisé esa ramificación. De todos modos, he configurado esto ahora:
git config branch.0.58.merge 0.58
git config branch.0.58.remote origin
Y esto parece funcionar. Luego, solo por interés, eché un vistazo a otra rama sobre esta configuración:
ip238:openlierox az$ git config branch.0.57.merge
refs/heads/0.57
ip238:openlierox az$ git config branch.0.57.remote
origin
Me preguntaba ahora, ¿hay alguna diferencia entre "0.58" o debería especificar "refs / heads / 0.58"?
¿Cuál es la diferencia exactamente?
heads
con una "s".Respuestas:
A
ref
es cualquier cosa que apunte a una confirmación, por ejemplo, ramas (cabezas), etiquetas y ramas remotas. Debería ver cabezas, controles remotos y etiquetas en su.git/refs
directorio, asumiendo que tiene los tres tipos de referencias en su repositorio.refs/heads/0.58
especifica una rama denominada 0.58. Si no especifica en qué espacio de nombres se encuentra la referencia, git buscará en los predeterminados. Esto hace que usar solo 0.58 sea concebiblemente ambiguo: podría tener tanto una rama como una etiqueta llamada 0.58.fuente
refs/heads/
yrefs/remotes/
yrefs/tags/
Solo para alguien que tenga curiosidad
git show-ref
, que está disponible desde Git v1.8.2.2, le mostrará todas las referencias que tiene en su repositorio local.fuente
git log --decorate=full
se mostrarán los nombres completos de las referencias en la historiaMira,
branchName
debe resolverse por completo antes de que GIT pueda identificarlo. El nombre completamente resuelto serárefs/heads/branchName
.Uno de los comandos famosos en
git checkout branchName
realidad lo resuelve automáticamente por completo para identificar dónde desea pagar. Tenga en cuenta que lo hace automáticamente, por lo tanto, nunca lo escribimos completamente por nuestra cuenta.Como hace eso ? Miremos aquí
Entonces, con los 6 pasos anteriores, intenta resolver qué es esto
branchName
. Por lo tanto, nunca necesitamos darle un branchName completamente resuelto.Mira aquí y aquí también.
Además, vaya a su
.git
directorio y vea dentro de laref
carpeta.fuente