Supongamos que tengo 5 confirmaciones locales. Quiero enviar solo 2 de ellos a un repositorio centralizado (usando un flujo de trabajo al estilo de SVN). ¿Cómo hago esto?¿cómo presionas solo algunas de tus confirmaciones locales de git?
Esto no funcionó:
git checkout HEAD~3 #set head to three commits ago
git push #attempt push from that head
que termina empujando los 5 commits locales.
Supongo que podría hacer un reinicio de git para deshacer mis commits, seguido de git stash y luego git push, pero ya tengo mensajes de confirmación escritos y archivos organizados y no quiero volver a hacerlos.
Mi impresión es que algún indicador pasado a presionar o reiniciar funcionaría.
Si ayuda, aquí está mi git config
[ramanujan:~/myrepo/.git]$cat config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = ssh://server/git/myrepo.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
Nota: no tiene que usar 'master ~ 3'. Cualquier referencia al compromiso "hasta" deseado es igualmente válida, como 'HEAD ~ 3' o 'HEAD ~~~ ', o el SHA específico, o una etiqueta que etiquete que commit. – Kaz
cosas buenas. Una advertencia sin embargo: estos ejemplos empujan al maestro de origen. Si está copiando y pegando esta solución, puede terminar accidentalmente actualizando la rama principal. (Por supuesto, siempre debe tener cuidado y verificar dos veces su comando antes de emitir un 'git push' ...) – nofinator
Parece que esto empuja la confirmación, pero no agrega la rama de forma remota. – Nateowami