Pregunta ¿Cómo paso una nueva sucursal local a un repositorio remoto de Git y también la sigo?


Quiero ser capaz de hacer lo siguiente:

  1. Cree una rama local basada en alguna otra rama (remota o local) (a través de git branch o git checkout -b)

  2. Empuje la sucursal local al repositorio remoto (publicar), pero hazlo rastreable por lo git pull y git push funcionará de inmediato.

¿Cómo puedo hacer eso?

Se acerca de --set-upstream en Git 1.7, pero esa es una acción posterior a la creación. Quiero encontrar una manera de hacer un cambio similar cuando empuje la rama hacia el repositorio remoto.


3649
2018-05-04 12:58


origen


Respuestas:


En Git 1.7.0 y posterior, puede verificar una nueva sucursal:

git checkout -b <branch>

Editar archivos, agregar y confirmar. Entonces empujar con el -u (corto para --set-upstream) opción:

git push -u origin <branch>

Git configurará la información de seguimiento durante la inserción.


5749
2018-06-03 20:50



Si no comparte su repositorio con otros, esto es útil para impulsar todas sus ramas al control remoto, y --set-upstream Seguimiento correcto para usted:

git push --all -u

(No es exactamente lo que el OP estaba pidiendo, pero este one-liner es bastante popular)

Si comparte su repositorio con otros, esta no es una buena forma, ya que va a obstruir el repositorio con todas sus ramas experimentales dudosas.


448
2018-01-20 11:36



Antes de la introducción de git push -u, no hubo git push opción para obtener lo que deseas. Debes agregar nuevas instrucciones de configuración.

Si creas una nueva rama usando:

$ git checkout -b branchB
$ git push origin branchB:branchB

Puedes usar el git config comando para evitar editar directamente el .git/config archivo.

$ git config branch.branchB.remote origin
$ git config branch.branchB.merge refs/heads/branchB

O puede editar manualmente .git/config archivo para tener información de seguimiento a esta rama.

[branch "branchB"]
    remote = origin
    merge = refs/heads/branchB

132
2018-05-04 13:03



En pocas palabras, para crear un nuevo local rama, hacer:

git branch <branch-name>

Para empujarlo a la remoto repositorio, hacer:

git push -u origin <branch-name>

111
2018-04-24 12:09



Una pequeña variación de las soluciones ya dadas aquí:

  1. Cree una sucursal local basada en alguna otra rama (remota o local):

    git checkout -b branchname
    
  2. Empuje la rama local al repositorio remoto (publicar), pero haga que se pueda rastrear git pull y git push funcionará de inmediato

    git push -u origin HEAD
    

    Utilizando HEAD es una "forma práctica de empujar la rama actual al mismo nombre en el control remoto". Fuente: https://git-scm.com/docs/git-push En términos de Git, HEAD (en mayúsculas) es una referencia a la parte superior de la rama actual (árbol).

    los -u opción es la abreviatura de --set-setupstream. Esto agregará una referencia de seguimiento en sentido ascendente para la rama actual. usted puede verificar esto mirando en su archivo .git / config:

    Enter image description here


55
2017-07-05 08:13



Supongo que ya clonaste un proyecto como:

git clone http://github.com/myproject.git
  1. Luego, en su copia local, cree una nueva rama y compruébela:

    git checkout -b <newbranch>
    
  2. Supongamos que ha hecho un "git bare --init" en su servidor y ha creado el myapp.git, debiendo:

    git remote add origin ssh://example.com/var/git/myapp.git
    git push origin master
    
  3. Después de eso, los usuarios deberían poder

    git clone http://example.com/var/git/myapp.git
    

NOTA: Supongo que tiene su servidor en funcionamiento. Si no es así, no funcionará. Un buen modo de hacerlo es aquí.

ADICIONAL

Agregar una rama remota:

git push origin master:new_feature_name

Compruebe si todo está bien (busque el origen y enumere las sucursales remotas):

git fetch origin
git branch -r

Crea una sucursal local y rastrea la sucursal remota:

git checkout -tb new_feature_name origin/new_feature_name

Actualiza todo:

git pull

27
2018-05-04 13:04



Simplemente lo hago

git push -u origin localBranch:remoteBranchToBeCreated

sobre un proyecto ya clonado.

Git crea una nueva rama llamada remoteBranchToBeCreated bajo mis compromisos que hice en localBranch.


24
2018-03-20 11:13



editar Anticuado, solo use git push -u origin $BRANCHNAME


Utilizar git publish-branch de Las diversas herramientas de Git de William (buen recuerdo y clon)

OK, no, Ruby, entonces, ¡ignorando las salvaguardas! - tomar las últimas tres líneas del script y crear un script bash, git-publish-branch:

#!/bin/bash
REMOTE=$1 # Rewrite this to make it optional...
BRANCH=$2
# Uncomment the following line to create BRANCH locally first
#git checkout -b ${BRANCH}
git push ${ORIGIN} ${BRANCH}:refs/heads/${BRANCH} &&
git config branch.${BRANCH}.remote ${REMOTE} &&
git config branch.${BRANCH}.merge refs/heads/${BRANCH}

Entonces corre git-publish-branch REMOTENAME BRANCHNAME, donde REMOTENAME es generalmente de origen (puede modificar el script para tomar el origen como predeterminado, etc ...)


19
2018-05-04 13:03



Para crear una nueva rama mediante la bifurcación de una sucursal existente

git checkout -b <new_branch>

y luego empuje esta nueva rama al repositorio usando

git push -u origin <new_branch>

Esto crea y empuja todas las confirmaciones locales a una rama remota recién creada origin/<new_branch>


15
2018-06-03 20:36



Hice un alias para que cada vez que crease una nueva rama, impulsara y rastreara la rama remota en consecuencia. Puse el siguiente fragmento en el .bash_profile archivo:

# Create a new branch, push to origin and track that remote branch
publishBranch() {
  git checkout -b $1
  git push -u origin $1
}
alias gcb=publishBranch

Uso: Sólo tipo gcb thuy/do-sth-kool con thuy/do-sth-kool es mi nuevo nombre de sucursal.


7
2018-01-05 10:11