with tag tab practices name eliminar create commits commands best git

tag - git: push un solo commit



git tags best practices (4)

Digamos que hice varios commits y deseo elegir de forma inteligente cuáles presiono para el repositorio remoto. ¿Cómo puedo hacer eso (en ascii: C1-> C2-> C3-> C4 y quiero presionar C2 y C4). ¿Reordenarán con rebase, restablecer, presionar y luego restablecer el trabajo? (C1-> C2-> C3-> C4 => C2-> C4-> C1-> C3 => restablecer C4 => pulsar => restablecer C3). ¿Hay una manera más agradable?


IIRC, debido a la forma en que git considera comprometerse a trabajar, C4 incluye inherentemente C3, por lo que el concepto de "presionar C4 pero no C3" no tiene sentido para git (y también C2 en relación con C1). (Vea la respuesta a esta pregunta anterior ).


Que estas buscando:

git push origin commit-id:master

El crédito va a: http://blog.dennisrobinson.name/push-only-one-commit-with-git/

Notas explicatorias:

  • Al presionar una confirmación, se presionan todas las confirmaciones (como dijo Amber). La clave es volver a ordenar las confirmaciones ( git rebase -i ) primero, para que estén en el orden en que desea aplicarlas.
  • El método sugerido branch + cherry-pick (sugerido por midtiby) también funciona, pero ¿por qué crear ramas desechables cuando no es necesario?
  • commit-id no tiene que ser un sha1. Para enviar todo antes de que se confirme la última N, use "HEAD ~ N" en lugar de commit-id .

Si está presionando una rama que aún no existe en el repositorio remoto, prefija la rama remota con refs/heads/ , como por ejemplo:

git push origin HEAD~1:refs/heads/completely-new-branch

(Si no, git lo castigará con este mensaje de error irremediable ).


Si tiene sus confirmaciones en una sucursal privada, puede seleccionar las confirmaciones de la sucursal privada y aplicarlas a la sucursal oficial. En este punto, ahora puede enviar todas sus confirmaciones a la sucursal oficial (que es el subconjunto que seleccionó previamente).


$ git push <remote name> <commit hash>:<remote branch name> # Example: $ git push origin 2dc2b7e393e6b712ef103eaac81050b9693395a4:master