2011-06-08 10 views
46

Gente,git push a la sucursal remota

Había clonado un puesto. He creado una rama de ella para trabajar en una característica emitiendo el siguiente comando:

git branch fix78

luego trabajé en esa rama de

git checkout fix78

continué para hacer commit en este sucursal local. Ahora quería empujar esto a la cesión temporal y por lo tanto he emitido el siguiente comando:

git push origin master:fix78

vi la cesión temporal de un navegador web y vio que una nueva rama llamada fix78 fue creado en el repositorio. Pero no tenía ninguno de mis compromisos que había hecho.

¿Qué estoy haciendo mal aquí? Esto es lo que estoy tratando de lograr:

Hay un repositorio (maestro (tronco en la jerga SVN)), ahora cuando estoy trabajando en una función quiero crear una rama local de ella y luego también quiero para registrar esta rama en el repositorio (para que otros miembros del equipo puedan ver en qué estoy trabajando), entonces quiero que mi sucursal local esté sincronizada con esta rama remota que creo.

Cualquier ayuda/comentario sería totalmente increíble.

Gracias.

Respuesta

60

git push origin master:fix78 empuja el maestro local a una rama remota llamada fix78. Usted quería empujar el fix78 sección local, que tiene la misma sintaxis, pero sin la master:

se puede arreglar haciendo git push origin :fix78 eliminar la rama remota y luego git push origin fix78 para empujar a su sucursal local al repositorio remoto.

+0

impresionante, muchas gracias, he entendido totalmente la diferencia entre git push origin master: fix78 y git push origin: fix78 – Rubyalto

+0

@Rubyalto Por favor acepte esta respuesta ... – Bzazz

51

El comando Push tiene la forma de

git push remote_name source_ref:destination_ref 

Todo lo que necesita hacer para corregir su error es

git push origin +fix78:fix78 

La más indica que no se preocupan por esa rama potencialmente perder la historia como el empuje anterior fue un error.

sintaxis alternativa es

git push -f origin fix78 

si se omite el destino, que da a entender que es el mismo nombre. Si el seguimiento está configurado para una rama particular en el control remoto, irá a ese. La eliminación de las ramas tiene 2 sintaxis, la edad:

git push -f origin :fix78 

y

git push --delete origin fix78 

La primera se lee como "empujar nada en fix78", que lo elimina.

Un truco es que si especifica . como nombre remoto, implica el repositorio actual como el control remoto. Esto es útil para la actualización de una rama local sin tener que comprobarlo:

git push . origin/master:master 

actualizará principal sin tener que checkout master.

Espero que esto ayude

+0

gracias, esto ayuda. – Rubyalto

+0

De hecho, esto ayudó. ¡Gracias por tu publicación! –

Cuestiones relacionadas