ver remote remotas remota ramas rama listar eliminar clonar cambiar git branch git-branch git-fetch

remote - listar ramas remotas git



Git buscar rama remota (25)

Mi colega y yo estamos trabajando en el mismo repositorio, lo hemos dividido en dos ramas, cada una técnicamente para diferentes proyectos, pero tienen similitudes, por lo que a veces queremos comprometernos con el * master de la rama.

Sin embargo, tengo la rama. Mi pregunta es, ¿cómo puede mi colega sacar esa rama específicamente? Un git clone de git clone del repo no parece crear las ramas localmente para él, aunque puedo verlas en vivo en el desabastecimiento después de un empujón en mi extremo.

Además, cuando originalmente hice la rama hice -b checkout . No estoy seguro si eso hace mucha diferencia?

iMac:test_solar dave$ git branch -r origin/HEAD -> origin/master origin/daves_branch origin/discover origin/master git fetch origin discover git checkout discover

Estos son los comandos que ejecuté. Pero definitivamente no está funcionando. Quiero poder revisar esa sucursal y luego rechazar y devolver solo los cambios de sucursales de varios colaboradores o estaciones de trabajo.


A veces se le pide que no juegue con la rama maestra y que trabaje solo con la rama remota (como se me pidió). Así que todo lo que necesitas es la rama remota.

Así que para clonar la rama remota solo (sin el maestro), haga esto

git clone url --branch remote_branch_name

donde remote_branch_name es el nombre de la rama remota

Por ejemplo,

git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git --branch v3.15

Esto asegurará que clone la rama remota a su rama local con el nombre de la rama remota.

Ahora, si confirma su código y presiona, el código se enviará solo a esa sucursal.


Con este sencillo comando:

git checkout -b ''your_branch'' origin/''remote branch''


Digamos que su control remoto es [email protected] y desea su rama random_branch. El proceso debe ser como sigue:

  1. Primero revise la lista de sus controles remotos por

    git remote -v

  2. Si no tiene el control remoto [email protected] en la salida del comando anterior, lo agregaría

    git remote add xyz [email protected]

  3. Ahora puedes obtener el contenido de ese control remoto

    git fetch xyz

  4. Ahora compruebe la rama de ese control remoto por

    git checkout -b my_copy_random_branch xyz/random_branch

  5. Compruebe la lista de sucursales por

    git branch -a

La rama local my_copy_random_branch estaría rastreando la rama random_branch de tu control remoto.


He utilizado fetch seguido de checkout ...

git fetch <remote> <rbranch>:<lbranch> git checkout <lbranch>

... donde <rbranch> es la rama remota o la referencia de origen y <lbranch> es la rama local o la referencia de destino que aún no existe y que probablemente desee nombrar como la rama remota o la fuente de referencia . Esto se explica en las options en la explicación de <refspec> .

Git es tan inteligente que completa automáticamente el primer comando si presiona después de las primeras letras de la rama remota. IE: Ni siquiera tengo que nombrar la sucursal local, Git copia automáticamente el nombre de la sucursal remota para mí. Gracias Git!

Además, como muestra la respuesta en esta publicación de SO similar , si no nombra la rama local que está disponible, aún puede crearla cuando la -b utilizando el indicador -b . IE: git fetch <remote> <branch> seguido de git checkout -b <branch> <remote>/<branch> hace exactamente lo mismo que mi respuesta inicial. Y, evidentemente, si su repositorio solo tiene un control remoto, puede hacer git checkout <branch> después de la fetch y creará una sucursal local para usted. EG: Acabas de clonar un repositorio y quieres ver ramas adicionales desde el control remoto.

Creo que parte de la documentación para la fetch puede haberse copiado literalmente de la pull . En particular, la sección sobre <refspec> en options es la misma. Sin embargo, no creo que el fetch se merge nunca, por lo que si deja el lado de destino del colon vacío no debería hacer nada .

NOTA: git fetch <remote> <refspec> es la abreviatura de git fetch <remote> <refspec>: que por lo tanto no haría nada, pero git fetch <remote> <tag> es lo mismo que git fetch <remote> <tag>:<tag> que debería copiar el <tag> remoto localmente.

Supongo que esto solo es útil si desea copiar una sucursal remota localmente, pero no necesariamente compruebe de inmediato. De lo contrario, ahora usaría la respuesta aceptada anterior , que se explica detalladamente en la primera sección de la descripción de la --track y más adelante en la sección de options en la explicación de --track , ya que es un 1-liner. Bueno ... una especie de 1-liner, porque aún tendrías que ejecutar git fetch <remote> primero.

FYI: El orden de los <refspecs> (origen: destino) explica el extraño método pre Git-1.7 para eliminar sucursales remotas . IE: No introduzca nada en el refspec de destino.


La forma más fácil de hacerlo, al menos para mí:

git fetch origin <branchName>


Lo que me ayudó fue

1) Para ver todas las sucursales remotas disponibles (por ejemplo, ''nombre de sucursal remota'')

git branch -r

2) Crear una rama local usando el nombre de la rama remota

git fetch && git checkout ''remote-branch-name''


Los pasos son los siguientes;

  1. git fetch origin o git fetch --all , esto llevará todas las ramas remotas a su local y luego esta es la segunda opción con la que puede proceder.

  2. git checkout --track origin/<The_remote_branch you want to switch over>

Luego trabaje en esta rama y puede verificar si está en esa rama o no escribiendo

git branch

Muestra la rama en la que se encuentra actualmente.


Necesitas crear una rama local que rastree una rama remota. El siguiente comando creará una rama local llamada daves_branch , rastreando el origen de la rama remota / daves_branch . Cuando presione sus cambios, se actualizará la rama remota.

Para la mayoría de las versiones de git:

git checkout --track origin/daves_branch

--track es la abreviatura de git checkout -b [branch] [remotename]/[branch] donde [remotename] es origen en este caso y [rama] es dos veces lo mismo, daves_branch en este caso.

Para git 1.5.6.5 necesitabas esto:

git checkout --track -b daves_branch origin/daves_branch

Para git 1.7.2.3 y superior, esto es suficiente (podría haber comenzado antes, pero esta es la confirmación más temprana que pude encontrar rápidamente):

git checkout daves_branch

Tenga en cuenta que con las versiones recientes de git, este comando no creará una rama local y lo pondrá en un estado ''HEAD desconectado''. Si quieres una sucursal local, usa la opción --track . Los detalles completos aquí: http://git-scm.com/book/en/v2/Git-Branching-Remote-Branches#Tracking-Branches


Para verificar myBranch que existe de forma remota y no localmente, esto funcionó para mí:

git fetch --all git checkout myBranch

Recibí este mensaje:

Branch myBranch set up to track remote branch myBranch from origin Switched to a new branch ''myBranch''


Si está intentando "desproteger" una nueva sucursal remota (que existe solo en el remoto, pero no localmente), esto es lo que necesitará:

git fetch origin git checkout --track origin/<remote_branch_name>

Esto supone que desea obtener desde el origen . Si no, reemplace el origen por su nombre remoto .


Si tiene un repositorio que fue clonado con --depth 1, muchos de los comandos listados no funcionarán. Por ejemplo ver aqui

% git clone --depth 1 https://github.com/repo/code Cloning into ''code''... cd code remote: Counting objects: 1778, done. remote: Compressing objects: 100% (1105/1105), done. remote: Total 1778 (delta 87), reused 1390 (delta 58), pack-reused 0 Receiving objects: 100% (1778/1778), 5.54 MiB | 4.33 MiB/s, done. Resolving deltas: 100% (87/87), done. Checking connectivity... done. Checking out files: 100% (1215/1215), done. % cd code % git checkout other_branch error: pathspec ''other_branch'' did not match any file(s) known to git. % git fetch origin other_branch remote: Counting objects: 47289, done. remote: Compressing objects: 100% (15906/15906), done. remote: Total 47289 (delta 30151), reused 46699 (delta 29570), pack-reused 0 Receiving objects: 100% (47289/47289), 31.03 MiB | 5.70 MiB/s, done. Resolving deltas: 100% (30151/30151), completed with 362 local objects. From https://github.com/repo/code * branch other_branch-> FETCH_HEAD % git checkout other_branch error: pathspec ''other_branch'' did not match any file(s) known to git. %

En este caso, volvería a hacer el repositorio, pero quizás haya otras técnicas, por ejemplo, git Clone superficial (clon - profundidad) pierde ramas remotas


Si ya conoces tu rama remota como tal ...

git remote => One => Two

y conoce el nombre de la sucursal que desea pagar por ej. br1.2.3.4 entonces haz

git fetch One => returns all meta data of remote i.e. the branch name in question.

Todo lo que queda es sacar la sucursal

git checkout br.1.2.3.4

Entonces haz cualquier rama nueva fuera de ella.


También puede obtener y retirar la rama remota de una sola vez: -

git fetch && git checkout the-branch-name


Un comando simple: "git checkout remote_branch_name" le ayudará a crear una sucursal local que tenga todos los cambios en la sucursal remota.


Use git branch -a ( git branch -a locales y remotas) o git branch -r (solo sucursales remotas) para ver todos los remotos y sus sucursales. Luego puede hacer un git checkout -t remotes/repo/branch al remoto y crear una sucursal local.

También hay un comando git ls-remote para ver todos los refs y etiquetas para ese control remoto.


Utiliza ''git pull'' para mantener tus ramas separadas. Usaré los nombres reales de las sucursales y los repositorios para ayudar, ya que ''lbranch'' y ''rbranch'' son difíciles de descifrar.

Vamos a utilizar:

  • myteam.unfuddle.com = el servidor git remoto
  • tlc = Desbloquear la cuenta del proyecto donde existe el repositorio
  • daves_branch = nombre de rama remota

    Usted, o cualquier colega, puede ejecutar esto para atraer solo a su sucursal, sin importar cuántas sucursales haya:

    git init git pull [email protected]:myteam/tlc daves_branch:refs/remotes/origin/daves_branch


  • Verifique su .git/config , en particular, qué seguimiento está presente en la búsqueda de ese control remoto.

    [remote "randomRemote"] url = [email protected]:someUser/someRepo.git fetch = +refs/heads/*:refs/remotes/randomRemote/*

    Si tiene heads/* apuntando a randomRemote/* , cuando ejecuta git fetch randomRemote , buscará todas las ramas. Entonces puedes simplemente retirar esa rama.

    De otra manera,

    1. Necesitas agregar sucursales remotas al seguimiento usando esto. Compruebe su .git/config después de ejecutar esto. Tu entenderás. git conjunto de ramas remotas --add randomRemote randomBranch

    2. Ejecute git fetch randomRemote . Esto traerá la rama remota.

    3. Ahora puedes ejecutar git checkout randomBranch


    escribí

    git checkout <branch_name>

    y consiguió

    Branch <branch_name> set up to track remote branch <branch_name> from origin. Switched to a new branch ''<branch_name>''


    simplemente intenta

    $ git pull origin your_branch_name


    git branch <name> --track origin/<name>


    git fetch && git checkout <your friend''s branch name> debería hacer el truco


    git fetch --all & git checkout <branch name>


    El título y la pregunta se confunden:

    • Git buscar rama remota
    • ¿Cómo puede mi colega tirar esa rama específicamente?

    Si la pregunta es cómo puedo conseguir que funcione una sucursal remota o cómo realizar el checkout de una sucursal remota, una solución más simple es:

    Con git (> = 1.6.6) puedes usar:

    git checkout <branch_name>

    Si no se encuentra <branch_name> local pero existe una rama de seguimiento en exactamente un control remoto con un nombre coincidente, trate como equivalente a:

    git checkout -b <branch_name> --track <remote>/<branch_name>

    checkout

    Para tu amigo

    $ git checkout discover Branch discover set up to track remote branch discover Switched to a new branch ''discover''


    git checkout -b serverfix origin/serverfix

    Esta es una operación bastante común que git proporciona la taquigrafía --track:

    git checkout --track origin/serverfix

    De hecho, esto es tan común que incluso hay un atajo para ese atajo. Si el nombre de la rama que está tratando de pagar (a) no existe y (b) coincide exactamente con un nombre en un solo control remoto, Git creará una rama de seguimiento para usted:

    git checkout serverfix

    Para configurar una sucursal local con un nombre diferente al de la sucursal remota, puede usar fácilmente la primera versión con un nombre de sucursal local diferente:

    git checkout -b sf origin/serverfix

    Ahora, su sucursal local sf se extraerá automáticamente del origen / serverfix.

    Fuente: Pro Git 2nd Edition, escrito por Scott Chacon y Ben Straub (corte para facilitar la lectura)


    git fetch git branch -r git checkout <branch_name>