Git busca una sucursal remota

Mi colega y yo estamos trabajando en el mismo repository, lo hemos ramificado en dos twigs, cada una desde el punto de vista técnico para diferentes proyectos, pero tienen similitudes, por lo que algunas veces querremos comprometernos con el * maestro de la sucursal.

Sin embargo, tengo la twig, ¿cómo puede mi colega sacar esa twig específicamente? Parece que un git clone del repository no crea las twigs localmente para él, aunque puedo verlas en vivo en unfuddle después de un empujón hacia mi final.

Además, cuando originalmente hice la sucursal, 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 commands que ejecuté. Pero definitivamente no funciona. Quiero poder verificar esa twig y luego presionar y confirmar solo los cambios de twigs de varios queueboradores o estaciones de trabajo.

Necesita crear una sucursal local que rastree una sucursal remota. El siguiente command creará una twig local llamada daves_branch , que rastrea la raíz remota origin / daves_branch . Cuando presione sus cambios, la twig remota se actualizará.

Para la mayoría de las versiones de git:

 git checkout --track origin/daves_branch 

--track es una abreviatura de git checkout -b [branch] [remotename]/[branch] donde [remotename] es origin en este caso y [branch] es dos veces el 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 primera confirmación que pude encontrar rápidamente):

 git checkout daves_branch 

Tenga en count que con las versiones recientes de git, esto orderará no crear una twig local y lo colocará en un estado de 'HEAD separado'. Si quieres una sucursal local, usa la opción --track . Todos los detalles aquí: http://git-scm.com/book/en/v2/Git-Branching-Remote-Branches#Tracking-Branches

He usado fetch seguido de checkout y checkout

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

… donde <rbranch> es la twig remota o reference de origen y <lbranch> es la reference local de twig o destino aún no existente que desea rastrear y que probablemente desee <lbranch> el mismo nombre que la derivación remota o fuente ref . Esto se explica en Opciones en la explicación de <refspec> .

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

También como muestra la respuesta en esta publicación SO similar , si no nombra la twig local en fetch , aún puede crearla cuando la comtesting utilizando el -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 repository tiene solo un control remoto, entonces puede hacer la git checkout <branch> después de fetch y creará una sucursal local para usted. EG: Acabas de clonar un repository y quieres consultar twigs adicionales desde el control remoto.

Creo que parte de la documentation para fetch puede haber sido copyda literalmente de pull . En particular, la sección sobre <refspec> en opciones es la misma. Sin embargo, no creo que la fetch se merge nunca, por lo que si deja el lado de destino de la fetch vacía de dos puntos , no debe hacer nada .

NOTA: Ese git fetch <remote> <refspec> es la abreviatura de git fetch <remote> <refspec>: que no haría nada, pero git fetch <remote> <tag> es lo mismo que git fetch <remote> <tag>:<tag> que debería copyr la <tag> remota localmente.

Supongo que esto solo es útil si quieres copyr una twig remota localmente, pero no necesariamente la verificas de inmediato. De lo contrario, ahora utilizaría la respuesta aceptada anteriormente , que se explica en detalle en la primera sección de la descripción de la compra y más adelante en la sección de opciones bajo 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 order de las <refspecs> (fuente: destino) explica el extraño método pre Git-1.7 para eliminar las sucursales remotas . IE: no introducir nada en el refspec de destino.

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

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

Esto supone que quieres search desde el origen . De lo contrario, reemplace el origen por su nombre remoto .

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

 git fetch --all git checkout myBranch 

Recibí este post:

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

El título y la pregunta son confusos:

  • Git busca una sucursal remota
  • ¿Cómo puede mi colega sacar esa twig específicamente?

Si la pregunta es ¿cómo puedo get una twig remota para trabajar o cómo hacer una transferencia a una sucursal remota, una solución más simple es:

Con git (> = 1.6.6) puede usar:

 git checkout <branch_name> 

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

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

ver documentation para el pago de git

Para tu amigo:

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

Utilice git branch -a (twigs locales y remotas) o git branch -r (solo twigs remotas) para ver todos los controles remotos y sus twigs. A continuación, puede hacer una git checkout -t remotes/repo/branch en el control remoto y crear una sucursal local.

También hay un command git ls-remote para ver todas las references y tags para ese control remoto.

 git checkout -b serverfix origin/serverfix 

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

 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 bifurcación que intentas pagar (a) no existe y (b) coincide exactamente con un nombre en un solo control remoto, Git creará una sucursal de seguimiento para ti:

 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 sf de sucursal local extraerá automáticamente el origen / serverfix.

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

 git fetch git branch -r git checkout <branch_name> 

También puede search y pagar en la sucursal remota de una sola vez:

 git fetch && git checkout the-branch-name 

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

A veces se le pide que no toquetee la twig principal y trabaje solo en la twig remota (como se me pidió). Entonces todo lo que necesitas es la twig remota.

Entonces, para clonar la twig remota solo (sin el maestro), haga esto

 git clone url --branch remote_branch_name 

donde, remote_branch_name es el nombre de la twig 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 twig remota a su twig local con el nombre de la twig remota.

Ahora si compromete su código y lo envía, el código se enviará solo a esa twig.

Los pasos son los siguientes;

  1. git fetch origin o git fetch --all , esto searchá todas las twigs remotas en tu local y luego esta será la segunda opción con la que puedes proceder.

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

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

 git branch 

Muestra la twig en la que se encuentra actualmente.

Si ya conoce su sucursal remota como tal …

 git remote => One => Two 

y usted sabe el nombre de la sucursal que desea pagar ex. br1.2.3.4 luego hacer

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

todo lo que queda es pagar la sucursal

 git checkout br.1.2.3.4 

Luego haz nuevas twigs fuera de él.

Comando simple:

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

Usas 'git pull' para mantener tus twigs separadas. Usaré el repository real y los nombres de las twigs para ayudar, ya que 'lbranch' y 'rbranch' son difíciles de descifrar.

Usemos:

  • myteam.unfuddle.com = el server remoto de git
  • tlc = unfuddle count de proyecto donde existe el repository
  • daves_branch = nombre de la sucursal remota
  • Usted, o cualquier colega, puede ejecutar esto para get solo su sucursal, sin importar cuántas sucursales haya:

     git init
     git pull git@myteam.unfuddle.com: myteam / tlc daves_branch: refs / remotos / origen / daves_branch
    

    Verifique su .git/config , particularmente qué rastreo está presente en la recuperación para ese control remoto.

     [remote "randomRemote"] url = git@github.com:someUser/someRepo.git fetch = +refs/heads/*:refs/remotes/randomRemote/* 

    Si tiene heads/* apuntando a randomRemote/* , cuando ejecutas git fetch randomRemote , obtendrá todas las twigs. Entonces puedes simplemente pagar esa twig.

    De otra manera,

    1. Necesita agregar twigs remotas al seguimiento usando esto. Comtesting tu .git/config después de ejecutar esto. Tu entenderás. git remote set-branches –add randomRemote randomBranch

    2. Ejecute git fetch randomRemote . Esto searchá la twig remota.

    3. Ahora puedes ejecutar git checkout randomBranch

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

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

     git fetch origin <branchName>