Alguien empujó una rama llamada test
con git push origin test
un repositorio compartido. Puedo ver la rama con git branch -r
.
Ahora estoy tratando de revisar la test
rama remota .
He intentado:
git checkout test
que no hace nadagit checkout origin/test
da* (no branch)
. Lo cual es confuso. ¿Cómo puedo estar en "sin sucursal"?
¿Cómo verifico una sucursal remota de Git?
git
git-checkout
remote-branch
Juri Glass
fuente
fuente
upstream
, no soloorigin
, y cada respuesta recomendada no hace nada remotamente útil (juego de palabras). EDITAR : disculpe, la multitud de sugerencias contenidas en las 2 respuestas principales fueron inútiles; El tercero (git branch test origin/test
) es lo que funciona. Me alegro de que los 2 primeros tengan 20Respuestas:
Actualizar
La respuesta de Jakub en realidad mejora esto. Con las versiones de Git ≥ 1.6.6, con un solo control remoto, solo puede hacer:
Como el usuario masukomi señala en un comentario,
git checkout test
NO funcionará en git moderno si tiene múltiples controles remotos. En este caso useo la taquigrafía
Vieja respuesta
Antes de que pueda comenzar a trabajar localmente en una rama remota, debe buscarla como se indica en las respuestas a continuación.
Para buscar una rama, simplemente necesita:
Esto buscará todas las ramas remotas para usted. Puede ver las sucursales disponibles para pagar con:
Con las sucursales remotas en la mano, ahora debe verificar la sucursal que le interesa y obtener una copia de trabajo local:
fuente
git fetch
antes de hacer esto para que Git es consciente deorigin/test
git fetch origin test
origin/test
que no se puede resolver como commit?"git checkout test
NO funcionará en git moderno si tiene múltiples controles remotos que tienen el mismo nombre de rama . No puede saber cuál usar.Nota al margen: con Git moderno (> = 1.6.6 ), puede usar solo
(tenga en cuenta que es 'prueba' no 'origen / prueba') realizar un DWIM mágico -mery y crear una 'prueba' de sucursal local para usted, para lo cual aguas arriba sería una 'fuente / prueba' de seguimiento remoto.
El
* (no branch)
engit branch
medio de salida que son en la rama sin nombre, en el estado de la llamada "cabeza separada" (puntos se dirijan directamente a cometer, y no se hace referencia simbólica a alguna rama local). Si realizó algunas confirmaciones en esta rama sin nombre, siempre puede crear una rama local a partir de la confirmación actual:** EDITAR (por editor no autor) **
Encontré un comentario enterrado debajo que parece modernizar esta respuesta:
enfásis en
git checkout origin/test
fuente
error: pathspec 'branch_name' did not match any file(s) known to git.
esta, primero debe hacer una búsqueda de git.En este caso, probablemente desee crear una
test
sucursal local que esté rastreando latest
sucursal remota :En versiones anteriores de
git
, necesitaba una--track
opción explícita , pero esa es la opción predeterminada ahora cuando se bifurca desde una rama remota.fuente
¿La respuesta aceptada no funciona para usted?
Si bien la primera y la respuesta seleccionada es técnicamente correcta , existe la posibilidad de que aún no haya recuperado todos los objetos y referencias del repositorio remoto. Si ese es el caso, recibirá el siguiente error:
Solución
Si recibe este mensaje, primero debe hacer un lugar
git fetch origin
dondeorigin
está el nombre del repositorio remoto antes de ejecutarlogit checkout remote_branch
. Aquí hay un ejemplo completo con respuestas:Como puede ver, la ejecución
git fetch origin
recuperó cualquier rama remota que aún no habíamos configurado para rastrear en nuestra máquina local. A partir de ahí, dado que ahora tenemos una referencia a la rama remota, simplemente podemos ejecutargit checkout remote_branch
y obtendremos los beneficios del seguimiento remoto.fuente
git checkout -b newbranch
también funciona muy bien para crear y pagar en 1 paso una nueva sucursal basada en la rama actual.git ls-remote
y la única manera de usar una esgit checkout -b [branch] --track [remote/branch]
... y eso fue después degit pull [remote] [branch]
trabajar. Es decir, en realidad arrancó toda la rama, pero aún así no la enumeraría.git fetch other_remote only_branch
aún así, obtienes elfatal
error. Tienes quegit fetch other_remote
sin el nombre de la sucursal. Diseño raroIntenté la solución anterior, pero no funcionó. Prueba esto, funciona:
Esto buscará la rama remota y creará una nueva rama local (si aún no existe) con el nombre
local_branch_name
y rastreará la remota en ella.fuente
Esto hará DWIM para un origen remoto no nombrado ( documentación ):
Para agregar un nuevo control remoto, primero deberá hacer lo siguiente:
El primero le dice a Git que el control remoto existe, el segundo obtiene los commits.
fuente
Utilizar:
Otras respuestas no funcionan con Git moderno en mi caso benigno. Es posible que deba tirar primero si la rama remota es nueva, pero no he verificado ese caso.
fuente
OK , la respuesta es fácil ... Básicamente ves la rama, ¡pero aún no tienes una copia local! ...
Necesitas a
fetch
la rama ...Simplemente puede buscar y luego pasar a la rama, use el comando de una línea a continuación para hacer eso:
También creé la imagen a continuación para que puedas compartir las diferencias, ver cómo
fetch
funciona y también cómo es diferentepull
:fuente
test
parece una nueva rama, por lo que no es probable que esté presente localmente. De lo contrario, podría hacerlo más fácil con un sologit pull
comando.fetch
Sinpull
dejar cambios en la copia recuperada pero no en la sucursal local, lo que lleva a que su sucursal local no esté actualizada?Para clonar un repositorio de Git, haga:
El comando anterior verifica todas las ramas, pero solo
master
se inicializará la rama. Si desea pagar las otras sucursales, haga:Este comando verifica la rama remota, y el nombre de su rama local será el mismo que la rama remota.
Si desea anular el nombre de su sucursal local al finalizar la compra:
Ahora su nombre de sucursal local es
enhancement
, pero su nombre de sucursal remota esfuture_branch
.Documentación
fuente
master
, esto no va a funcionar.Puedes probar
o
fuente
--track
ya no es necesario en las versiones más nuevas de git, porque está configurado de forma predeterminada, como se explica en esta respuesta anterior .Primero, debes hacer:
git fetch
# Si no sabe sobre el nombre de la sucursalEn segundo lugar, puede verificar la sucursal remota en su local al:
-b
creará una nueva rama en el nombre especificado de la rama remota seleccionada.fuente
Yo uso el siguiente comando:
fuente
Comandos
son iguales a
y entonces
Ambos crearán una
latest fixes_for_dev
dedevelopment
fuente
Si la rama está en algo diferente al
origin
control remoto, me gustaría hacer lo siguiente:Esto verificará la
next
rama en elupstream
control remoto en una rama local llamadasecond/next
. Lo que significa que si ya tiene una sucursal local llamada a continuación, no entrará en conflicto.fuente
git fetch && git checkout your-branch-name
fuente
Ninguna de estas respuestas funcionó para mí. esto funcionó:
git checkout -b feature/branch remotes/origin/feature/branch
fuente
git
al llamar algit branch -a
comando, pero no estaba seguro, así que simplemente lo uségit checkout -b apps/FEATURE/branch origin/apps/FEATURE/branch
y parecía funcionar. Mensaje:Branch 'apps/FEATURE/branch' set up to track remote branch 'apps/FEATURE/epicBranch' from 'origin'. Switched to a new branch 'apps/FEATURE/branch'
Estaba atrapado en una situación viendo
error: pathspec 'desired-branch' did not match any file(s) known to git.
todas las sugerencias anteriores. Estoy en git versión 1.8.3.1.Entonces esto funcionó para mí :
La explicación detrás es que me di cuenta de que al recuperar la rama remota, se recuperaba a FETCH_HEAD:
fuente
Simplemente ejecute
git checkout
con el nombre de la rama remota. Git creará automáticamente una rama local que rastrea la remota:Sin embargo, si ese nombre de sucursal se encuentra en más de un control remoto, esto no funcionará ya que Git no sabe cuál usar. En ese caso, puede usar:
o
En 2.19 , Git aprendió la
checkout.defaultRemote
configuración, que especifica un control remoto predeterminado para resolver dicha ambigüedad.fuente
git branch -r
dice que el nombre del objeto no es válido, porque ese nombre de rama no está en la lista de ramas locales de Git. Actualice su lista de sucursales locales desde el origen con:Y luego intente revisar su rama remota nuevamente.
Esto funcionó para mí.
Creo que
git fetch
atrae todas las ramas remotas, que no es lo que quería el póster original.fuente
git remote update
también buscará todas las ramas remotas .El
git remote show <origin name>
comando enumerará todas las ramas (incluidas las ramas sin seguimiento). Luego puede encontrar el nombre de la sucursal remota que necesita buscar.Ejemplo:
Siga estos pasos para buscar ramas remotas:
Ejemplo:
fuente
$ git clone -b release --single-branch --depth 5 https://github.com/user/repo.git
información de Wron't$ git remote show origin
no enumera todas las ramas remotas con repositorios clonados de una sola rama.Recuperar desde el control remoto y pagar la sucursal.
P.ej:
fuente
Otros chicos y chicas dan las soluciones, pero tal vez pueda decirte por qué.
Does nothing
no es igualdoesn't work
, así que supongo que cuando escribe 'prueba de pago git' en su terminal y presiona la tecla enter, no aparece ningún mensaje y no se produce ningún error. Estoy en lo cierto?Si la respuesta es 'sí', puedo decirte la causa.
La causa es que hay un archivo (o carpeta) llamado 'prueba' en su árbol de trabajo.
Cuando se
git checkout xxx
analiza,xxx
como nombre de una rama al principio, pero no hay ninguna rama llamada prueba.xxx
es un camino, y afortunadamente (o desafortunadamente), hay un archivo llamado prueba. Entoncesgit checkout xxx
significa descartar cualquier modificación enxxx
archivo.xxx
, entonces Git intentará crearlo dexxx
acuerdo con algunas reglas. Una de las reglas es crear una rama llamadaxxx
siremotes/origin/xxx
existe.fuente
Para obtener ramas recién creadas
Para cambiar a otra rama
fuente
Puede comenzar a rastrear todas las ramas remotas con el siguiente script de Bash:
Aquí también hay una versión de una sola línea:
fuente
git checkout -b "Branch_name" [B significa Crear sucursal local]
git branch --todos
git checkout -b "Nombre de su sucursal"
rama de git
pago exitoso de la rama maestra a la rama dev
fuente
para obtener todas las ramas remotas use esto:
luego pagar a la sucursal:
fuente
Úselo
fetch
para jalar todo su control remotoPara enumerar sucursales remotas:
Para listar todas tus sucursales
Para pagar / cambiar una sucursal
fuente
git branch -l
y no se mostró ninguna rama remota.git pull --all
orgit fetch --all
git branch -l
todavía muestra solo sucursales locales . Parece estar funcionando exactamente comogit branch
fuera-l
, entonces, ¿cuál es la razón-l
?master
no es una rama remota.-l
bandera para la lista. Se puede utilizar--list
tambiénPara nosotros, parece que la
remote.origin.fetch
configuración dio un problema. Por lo tanto, no pudimos ver ninguna otra rama remotamaster
, porgit fetch [--all]
lo que no ayudó. Nigit checkout mybranch
tampocogit checkout -b mybranch --track origin/mybranch
funcionó, aunque ciertamente estaba en remoto.La configuración anterior solo permitía
master
ser obtenida:Solucione el uso
*
y obtenga la nueva información del origen:Ahora podríamos
git checkout
la sucursal remota localmente.No tengo idea de cómo terminó esta configuración en nuestro repositorio local.
fuente
Si el nombre de la rama remota comienza con caracteres especiales, debe usar comillas simples alrededor de él en el comando de pago, de lo contrario, git no sabrá de qué rama está hablando.
Por ejemplo, traté de pagar una rama remota llamada
#9773
pero el comando no funcionó correctamente, como se muestra en la imagen a continuación:Por alguna razón, me preguntaba si el símbolo agudo (#) podría tener algo que ver con eso, y luego intenté rodear el nombre de la rama con comillas simples, como
'#9773'
rathen que solo#9773
, y afortunadamente funcionó bien.fuente
#
carácter se usa para comentarios, por lo#
que se ignorará cualquier cosa posterior . Esto es una cosa de shell y no algo específico para git. Usar comillas de una barra invertida antes de la#
debería ser suficiente.Siga el comando para crear una carpeta vacía. Ingrese eso y use este comando:
fuente