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?git: push a single commit
Respuesta
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).
IIRC, debido a que git considera que se compromete 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 relativo a C1). (Consulte la respuesta al this previous question.)
¡Falso! C4 hace referencia a C3 como su elemento primario, pero la otra respuesta es más correcta: puede elegir cometas del historial y aplicarlas a diferentes padres. –
¿No es más como que C4 aplica intrínsecamente sus cambios a C3 pero los cambios de C4 son propios? – andho
El uso de 'git cherry-pick' en' C4' para aplicarlo a una rama diferente no dará como resultado 'C4' en la nueva rama, sino' C4'', una confirmación diferente (pero similar). Si alguien más tarde se fusionó en la sucursal con 'C4', podrían surgir problemas. – Amber
Lo que estamos buscando:
git push origin commit-id:master
crédito va a: http://blog.dennisrobinson.name/push-only-one-commit-with-git/
Notas:
- Empujar una confirmación empuja todos los envíos antes de que (como dijo ámbar). La clave es reordenar sus confirmaciones (
git rebase -i
) primero, por lo que son en el orden en que desea aplicarlos. - El método sugerido branch + cherry-pick (sugerido por midtiby) funciona también, pero ¿por qué crear ramas desechables cuando no es necesario?
commit-id
no tiene que ser un sha1. Para enviar todo antes de las últimas N confirmaciones, use "HEAD ~ N" en lugar decommit-id
.
Esta debería ser la respuesta aceptada. +1 gracias. –
$ git push <remote name> <commit hash>:<remote branch name>
# Example:
$ git push origin 2dc2b7e393e6b712ef103eaac81050b9693395a4:master
por favor agregue algunos comentarios con su respuesta, esto hará que sea fácil de leer ... –
- 1. commit-pull-merge-push o pull-merge-commit-push?
- 2. git commit -a confusion
- 3. 'git push'
- 4. Git pre-push hooks
- 5. Script Git commit bash
- 6. git add. vs git commit -a
- 7. git: eliminar 2nd commit
- 8. Git: Stop git push
- 9. hg-git push silenciosamente falla
- 10. ¿Cómo puedo deshacer un commit de git DESPUÉS de un git push?
- 11. git push a la sucursal remota
- 12. ¿Se pueden automatizar los commit/push a github?
- 13. Git eliminar commit raíz
- 14. revirtiendo push'd git commit
- 15. git commit problems
- 16. Usando git commit -a con vim
- 17. Git falla al presionar commit a github
- 18. ¿Funciona `git push` como abreviatura de` git push origin newfeature`?
- 19. Bad commit to Git
- 20. git commit - format?
- 21. Git Commit Generation Numbers
- 22. git commit directorio
- 23. git find fat commit
- 24. Lost Last Git Commit
- 25. Git commit from python
- 26. delete first git commit
- 27. git push, no push all local commits
- 28. git post-push hook?
- 29. Error cuando "git push" a github
- 30. git push a través de cron
sí, se puede reescribir la historia (o crear rama separada con la historia es necesario) y luego empuje. Esta es la única manera. –
Yo también estaba buscando el mismo problema. Este recurso podría ser útil https://miteshshah.github.io/linux/git/how-to-push-single-commit-with-git/ –