git ,, local push '' de la twig de características a la maestra, sin pago

Me gustaría fusionarme de FeatureBranch a master, sin hacer, "checkout master" en primer lugar. Lo intenté (estando en FeatureBranch)

git push . master 

pero tengo (hasta cierto punto de sorpresa):

 Everything up-to-date 

A pesar de tener commits en FeatureBranch que no están (todavía) presentes en master.

Las razones por las que deseo poder hacer un "empujón local de un solo paso" son:

  1. Quiero darles cambios a mis compañeros de trabajo que permanecen en la twig principal
  2. sin el paso adicional de 'checkout master' '
  3. pudiendo así permanecer en FeatureBranch
  4. y evitar cambios rápidos de muchos files que confunden / alertan a muchas herramientas que tienen algo que ver con los directorys / files en el repository

Sé que puedo hacerlo en más pasos de diferentes maneras. Pero me pregunto si hay una solución de un solo paso para esto (creo que debería haber).

Pienso que, si surgen conflictos, tendría que cambiar de maestro de todos modos. Pero en la mayoría de los casos no tengo conflictos y, por lo tanto, me beneficiaría de la solución de un solo paso.

Mi versión de git:

 git --version git version 1.6.5.1.1367.gcd48 

(Windows)

TIA
karolrvn

La pregunta " Fusionar sucursales sin pago y envío" brinda respuestas excelentes que explican por qué es necesaria una verificación.
Mantener un repository separado (con la twig objective desprotegida) es otra manera.

Pero el punto principal sigue siendo: push / pull se trata de repos remoto .
El pago es sobre el repository local.

Comandos de transporte de datos Git

Si tienes ese esquema en mente, te das count de que no presionas para master .

En cuanto a su pregunta sobre por qué el command push actúa como lo hace …

Push se usa para propagar commits desde un repository a otro , no entre twigs dentro de un repository. En su caso, está presionando desde un repository al mismo repository, por lo que la respuesta es "Todo al día", tal como debería ser. El hecho de que nombre dos twigs diferentes es irrelevante en este caso.

No puede comprometerse con una sucursal que no sea la actual; o para decirlo de otra manera, el nuevo nodo creado por git commit es siempre un hijo del HEAD actual.

De vez en cuando, he usado un repository de 'puesta en escena' para evitar la sobrecarga de cambiar twigs en mi entorno de desarrollo en vivo:

 # Currently working on branch 'foo' in $SOME_DIR/main-repo # main-repo is a local clone of shanetworking-repo # Create the staging repo alongside the existing main-repo cd $SOME_DIR git clone shanetworking-repo staging-repo cd staging-repo git remote add local ../main-repo # Switch back to main-repo and continue working cd main-repo # (Make changes and commit to branch foo ...) # Switch to the staging repo cd $SOME_DIR/staging-repo # Make sure we are up to date with shanetworking repo (*) git pull # Merge changes from main-repo git fetch local git merge local/foo # Push changes up to the shanetworking repo git push 

Un problema potencial con este enfoque es que no le permite probar el resultado de fusionarse en los cambios realizados en la twig 'foo' con ninguno que mientras tanto se haya realizado en shanetworking-repo / master (*) . Dependiendo de la naturaleza de los cambios, esto puede estar bien, pero en la mayoría de los casos querrá al less hacer una revisión rápida de la cordura (por ejemplo, verificar que el código aún comstack, tal vez ejecutar testings de humo) antes de pasar al repository compartido.

Para hacer eso, necesitarías:

  1. build staging-repo – pero en este caso, la fusión podría haberse hecho directamente en main-repo
  2. tener un repository intermedio en un entorno de compilation separado del repository principal, es decir, $SOME_OTHER_DIR/staging-repo . Esto permitiría build y / o repasar escenarios sin ensuciar el entorno de main-repo.

Parece que lo que realmente quieres hacer es una fusión, no un empujón. Lamentablemente, no creo que eso sea posible sin estar en la twig que es el objective de la fusión, por lo que la secuencia de commands sería:

 git checkout master git merge FeatureBranch git checkout FeatureBranch 

Toda esta operación debería tomar less de un segundo, por lo que no estoy seguro de por qué te opones a cambiar a la twig principal para esto …

Tuve el mismo problema, y ​​en base a su idea encontré que la solución es bastante simple:

 git push . HEAD:master 

esto funciona, siempre y cuando el maestro pueda reenviarse rápidamente a su jefe actual, es decir, usted haya iniciado su twig actual en el maestro y no tenga nuevos commits en el maestro desde entonces.