tipos tag remove practices etiquetas crear best git commit push

remove - git tag best practices



¿Cómo puedo enviar un compromiso específico a un control remoto, y no a compromisos anteriores? (6)

He realizado varias confirmaciones en diferentes archivos, pero hasta ahora me gustaría enviar a mi repositorio remoto solo una confirmación específica.

¿Es eso posible?


Cherry-pick funciona mejor en comparación con todos los demás métodos al tiempo que presiona un compromiso específico.

La forma de hacerlo es:

Crear una nueva rama -

git branch <new-branch>

Actualice su nueva sucursal con su sucursal de origen -

git fetch git rebase

Estas acciones asegurarán que usted tenga exactamente lo mismo que su origen.

Cereza, elige la sha id que quieres hacer.

git cherry-pick <sha id of the commit>

Usted puede obtener la sha id ejecutando

git log

Empújalo a tu origen -

git push

Ejecuta gitk para ver que todo se ve de la misma manera que querías.


Creo que tendrías que "revertir" de nuevo a ese compromiso y luego empujarlo. O puede cherry-pick un compromiso en una nueva rama y enviarlo a la rama en el repositorio remoto. Algo como :

git branch onecommit git checkout onecommit git cherry-pick 7300a6130d9447e18a931e898b64eefedea19544 # From the other branch git push origin {branch}


Las otras respuestas faltan en las descripciones de reordenación.

git push <remotename> <commit SHA>:<remotebranchname>

empujará un solo compromiso, pero ese compromiso debe ser el MÁS ANTIGUO de sus compromisos locales, no empujados, no debe confundirse con el principio, primero o cometer consejo, que en mi opinión son todas descripciones ambiguas. El compromiso debe ser el más antiguo de sus compromisos, es decir, el más lejano de su compromiso más reciente. Si no es la confirmación más antigua, se enviarán todas las confirmaciones de su SHA local, más antigua, no enviada a la SHA especificada. Para reordenar los usos comprometidos:

git rebase -i HEAD~xxx

Después de reordenar la confirmación, puede enviarla de forma segura al repositorio remoto.

Para resumir, utilicé

git rebase -i HEAD~<number of commits to SHA> git push origin <post-rebase SHA>:master

para empujar un solo compromiso a mi rama maestra remota.

Referencias:

  1. http://blog.dennisrobinson.name/push-only-one-commit-with-git/
  2. http://blog.dennisrobinson.name/reorder-commits-with-git/

Ver también:

  1. git: Duplicar confirmaciones después de una reorganización local seguida de extracción
  2. git: Empujar compromisos individuales, Reordenar con rebase, Confirmar duplicados

Para subir a través de un compromiso dado, puedes escribir:

git push <remotename> <commit SHA>:<remotebranchname>

siempre que <remotebranchname> ya exista en el control remoto. (Si no lo hace, puede usar git push <remotename> <commit SHA>:refs/heads/<remotebranchname> para autocrearlo).

Si desea enviar una confirmación sin presionar las confirmaciones anteriores, primero debe usar git rebase -i para reordenar las confirmaciones.

EDITAR

Para obtener una descripción más completa de lo que debe hacer, consulte la respuesta de @ Samuel: https://.com/a/27907287/889213

Referencias:

  1. http://blog.dennisrobinson.name/push-only-one-commit-with-git/
  2. http://blog.dennisrobinson.name/reorder-commits-with-git/

Probé la solución sugerida:

git push <remotename> <commit SHA>:<remotebranchname>

Me gusta esto:

git push origin 712acff81033eddc90bb2b45e1e4cd031fefc50f:master

En mi caso, el master tenía 5 confirmaciones por delante y solo quería presionar mi última confirmación, pero lo anterior terminó impulsando todos mis cambios hasta e incluyendo la confirmación mencionada. Me parece que el método cherry-pick podría ser un mejor enfoque para este caso de uso.


Yo sugeriría usar git rebase -i ; mueva la confirmación que desea empujar a la parte superior de las confirmaciones que ha realizado. Luego use git log para obtener el SHA de la confirmación rebasada, verifíquelo y presione. El rebase asegurará que todos sus otros compromisos sean ahora hijos del que usted presionó, por lo que los futuros empujes también funcionarán bien.