Quiero poder hacer lo siguiente:
Cree una sucursal local basada en alguna otra sucursal (remota o local) (a través de
git branchogit checkout -b)Empuje la rama local al repositorio remoto (publicar), pero hágalo rastreable
git pullygit pushfuncionará de inmediato.
¿Cómo puedo hacer eso?
Lo sé --set-upstreamen Git 1.7, pero esa es una acción posterior a la creación. Quiero encontrar una manera de hacer un cambio similar al empujar la rama al repositorio remoto.
git
repository
git-branch
git-push
git-remote
Roni Yaniv
fuente
fuente

Respuestas:
En Git 1.7.0 y posterior, puedes pagar una nueva rama:
Edite archivos, agregue y confirme. Luego presione con la
-u--set-upstreamopción (abreviatura de ) :Git configurará la información de seguimiento durante el envío.
fuente
push.defaultestá configurada enupstream, esto no hará lo que cree que hará. Intentará superar la rama de seguimiento existente. Uso:git push -u origin mynewfeature:mynewfeatureo hacergit branch --unset-upstreamprimero.-uopción cada vez que empujamos la rama a su control remoto o solo la necesitamos la primera vez?-uuna vez para iniciar el seguimiento. Después solo usegit pushSi no está compartiendo su repositorio con otros, esto es útil para enviar todas sus sucursales al control remoto y realizar un
--set-upstreamseguimiento correcto para usted:(No es exactamente lo que pedía el OP, pero esta frase es bastante popular)
Si está compartiendo su repositorio con otros, esta no es una buena forma, ya que obstruirá el repositorio con todas sus ramas experimentales poco fiables.
fuente
git pull --allretira todo a otra parte? kewlgit push --all -u?Antes de la introducción de
git push -u, no habíagit pushopción para obtener lo que desea. Tuvo que agregar nuevas declaraciones de configuración.Si crea una nueva rama usando:
Puede usar el
git configcomando para evitar editar directamente el.git/configarchivo.O puede editar manualmente el
.git/configarchivo que tenía información de seguimiento para esta rama.fuente
git push origin -u local_branch:remote_branchEn pocas palabras, para crear una nueva sucursal local , haga:
Para enviarlo al repositorio remoto , haga lo siguiente:
fuente
git branch <branch-name>ygit checkout -b <branch-name>ambos crean una bifurcación, pero el proceso de pago cambia a la nueva bifurcaciónsrc branch-name does not match anyUna ligera variación de las soluciones ya dadas aquí:
Cree una rama local basada en alguna otra rama (remota o local):
Empuje la rama local al repositorio remoto (publicar), pero hágalo rastreable
git pullygit pushfuncionará de inmediatoUsar
HEADes 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).La
-uopción es solo la abreviatura de--set-upstream. Esto agregará una referencia de seguimiento ascendente para la rama actual. puede verificar esto buscando en su archivo .git / config:fuente
git push -u origin <branch-name>no funcionaba para mí, pero usarlo enHEADlugar de<branch-name>funcionar perfectamente :)Yo simplemente hago
sobre un proyecto ya clonado.
Git crea una nueva rama nombrada
remoteBranchToBeCreatedbajo mis commits que hicelocalBranch.Editar : esto cambia de su rama local actual (posiblemente llamado
localBranch) aguas arriba aorigin/remoteBranchToBeCreated. Para arreglar eso, simplemente escriba:Entonces su sucursal local actual ahora rastrea
origin/localBranch.fuente
error: src refspec <new branch> does not match any.cuando intento esto.Supongo que ya has clonado un proyecto como:
Luego, en su copia local, cree una nueva sucursal y compruébelo:
Suponiendo que creó un "git bare --init" en su servidor y creó el myapp.git, debe:
Después de eso, los usuarios deberían poder
NOTA: Supongo que tiene su servidor en funcionamiento. Si no es así, no funcionará. Un buen tutorial está aquí .
ADICIONAL
Agregar una rama remota:
Comprueba si todo está bien (busca el origen y enumera las ramas remotas):
Cree una sucursal local y rastree la sucursal remota:
Actualiza todo:
fuente
git remote add originhace que la sucursal local sea rastreable? ¿Es ese el comando de teclado aquí?git remote add originsolo registra un nuevo repositorio remoto. Es solo un paso necesario antes de llevar su sucursal a ese repositorio remoto (si no desea escribir la dirección completa cada vez)editar Desfasado, solo use
git push -u origin $BRANCHNAMEÚselo
git publish-branchde las diversas herramientas Git de William ( repositorio y clon gitorios ).OK, no Ruby, entonces, ¡ignorando las salvaguardas! - tome las últimas tres líneas del guión y cree un guión bash
git-publish-branch:Luego
git-publish-branch REMOTENAME BRANCHNAME, ejecute , donde REMOTENAME suele ser el origen (puede modificar el script para que tenga su origen como predeterminado, etc.)fuente
git pushygit configordena. Usé el código del script para editar mi respuesta. Puede usar esta información para crear un pequeño script de shell que lo empuje por usted.Para crear una nueva rama ramificándose desde una rama existente
y luego empuje esta nueva rama al repositorio usando
Esto crea y empuja todos los commits locales a una rama remota recién creada
origin/<new_branch>fuente
Para la versión de GitLab anterior a 1.7, use:
(name_branch, ex:
master)Para enviarlo al repositorio remoto, haga lo siguiente:
(name_new_branch, ejemplo:
feature)fuente
Hice un alias para que cada vez que cree una nueva rama, empuje y rastree la rama remota en consecuencia. Puse el siguiente fragmento en el
.bash_profilearchivo:Uso : simplemente escriba
gcb thuy/do-sth-koolconthuy/do-sth-koolmi nuevo nombre de sucursal.fuente
Basándome ligeramente en las respuestas aquí, he terminado este proceso como un simple script Bash, que por supuesto podría usarse también como un alias de Git.
La adición importante para mí es que esto me lleva a ejecutar pruebas unitarias antes de confirmar y pasa el nombre de la sucursal actual de forma predeterminada.
git_push_new_branch.sh
fuente
Puedes hacerlo en 2 pasos:
1. Use
checkoutpara crear la rama local:Trabaja con tu sucursal como quieras.
2. Use el
pushcomando para crear automáticamente la rama y enviar el código al repositorio remoto:fuente
Para mayor flexibilidad, puede usar un comando Git personalizado . Por ejemplo, cree el siguiente script de Python en algún lugar
$PATHdebajo del nombregit-publishy hágalo ejecutable:Luego
git publish -hle mostrará información de uso:fuente