tipos tag stash qué existen etiquetas eliminar crear git github

tag - qué tipos de etiquetas existen en git



horquilla de github: su rama tiene 5 pasos por delante de cómo limpiar esto sin empujar (2)

Uso este pequeño script de shell para restablecer una rama a su origen

function git_branch_reset_origin() { branch_name="$(git symbolic-ref HEAD 2>/dev/null)" branch_name=${branch_name##refs/heads/} git checkout -b foo git branch -D ${branch_name} git checkout ${branch_name} git branch -D foo }

En pocas palabras, se mueve a una nueva rama ''foo'', elimina la rama en la que estaba y vuelve a verificarla. Al revisar una rama que no tiene localmente, se crea una nueva rama local de ese nombre en la posición de la rama de origen.

Bifurqué un proyecto en github, con el fin de enviar solicitudes de extracción. El problema es que mi manera de hacerlo era muy ... sucia.

Trabajé en una copia local de la bifurcación, creé una rama para mis modificaciones y la fusioné en el maestro. Luego empujé el maestro en la horquilla de github para crear una solicitud de extracción.

El problema es que recientemente, mi solicitud de extracción ha sido rechazada. Así que ahora tengo 5 compromisos por delante del maestro original. ¿Cuáles son las soluciones para estar a la par con el repositorio original?

¿Debo tener que retirar el maestro ascendente en una nueva rama y hacer el nuevo maestro con él (cómo hacerlo?)

¿O es mejor eliminar mi fork de github (tengo confirmaciones anteriores) y volver a crearla (puede ver los repositorios de github aquí) https://github.com/cedlemo/ruby-gnome2


Primero, siempre debes hacer que tu RP forme una rama , no de master .
master es para reflejar upstream/master , con '' upstream '' ser el nombre del repositorio original que has descifrado.

En su caso, asegúrese de que exista en upstream , haga una rama para hacer referencia a sus parches actuales y restablezca el master a upstream/master :

Antes de:

z--z (upstream/master, with new commits) / z--y--y--y (master with local patches, origin/master)

Memorizar el trabajo actual:

git checkout master git checkout -b mybranch git remote add upstream /url/original/repo git fetch upstream # reset master to upstream/master git checkout master git reset --hard upstream/master git push --force y--y--y (mybranch) / z--z--z (master, upstream/master, origin/master) # replay the patches (even they are rejected for now) on top of master git checkout mybranch git rebase master git push -u origin mybranch y''--y''--y'' (mybranch, origin/mybranch) / z--z--z (master, upstream/master, origin/master)

Aquí: git reset --hard upstream/master restablecerá el HEAD master en el upstream/master actualizado, para que el maestro refleje exactamente el mismo historial que el del repositorio original.

Pero como algunas confirmaciones se realizaron previamente en el master y se presionaron en la bifurcación ( origin/master ), deberá reemplazar ese historial con el nuevo estado del master . De ahí la git push --force .

Rebasar mybranch permite que esos parches actuales se basen en la confirmación más actualizada del repositorio original.