tipos tag tab remove etiquetas crear commits git github

tag - ¿Cómo puedo limpiar mi tenedor Github para poder hacer solicitudes de extracción limpias?



git versioning (3)

Bifurqué un repositorio en Github. Realicé algunos cambios menores y envié solicitudes de extracción al origen, pero a lo largo del camino mi horquilla se ha quedado tan destrozada que no puedo generar solicitudes de extracción limpias; cuando empiezo una solicitud de extracción desde una sucursal con seis cambios, Github quiere enviar trece, con siete de ellos ya existentes en sentido ascendente (natch).

Mi problema parece estar relacionado con solo extraer los últimos commits , pero cuando creo una nueva rama y commit de cherry-pick todavía tengo extras. También he vuelto a usar el rebasado, pero ahora parece que incluso mi maestro está tan desordenado que no puedo generar una copia limpia de la upstream . Esto es aparentemente porque no entendía que necesitaba volver a establecer la base en lugar de fusionarme , así que claramente cometí errores; Lo que trato de hacer es descubrir cómo deshacer ese nudo y volver a un estado limpio en el que pueda avanzar de manera útil.

Como que quiero deshacerme del tenedor y hacer una nueva bifurcación aguas arriba, pero creo que eso también es difícil.

Habiendo confesado mis pecados Git, ¿cómo obtengo la absolución github?


En su repositorio privado, agregue el repositorio de forkee como control remoto. Restaure / restablezca sus ramas desde las ramas del control remoto. Haz un empujón de fuerza a tu repositorio github.

Si necesita comandos exactos, hágamelo saber. También avíseme si quiere probar y preservar las confirmaciones locales o si "volando" está bien.


Según tengo entendido, tanto con Git como con Mercurial (solo he usado este último, así que puedo estar equivocado) no es gran cosa soplar un tenedor y volver a tenedor. Lo hago todo el tiempo con mis proyectos. Si estás bien haciendo eso (puedes hacer una copia de seguridad de tus cambios, o no tienes ningún cambio significativo en tu tenedor), diría que ese es probablemente el camino a seguir.

Recuerde, con DVCS, la creación de un repositorio hace una copia completa de ese repositorio completo . Si elimina su bifurcación actual y luego bifurca nuevamente el bono original, tendrá una pizarra completamente limpia para trabajar.


Paso 1: Tire de los cambios ascendentes
Se recomienda agregar el repositorio upstream como "upstream" como se explica en la página de Fork a Repo :

git pull --rebase upstream master

La opción --rebase coloca sus cambios sobre la última confirmación sin fusiones.

Paso 2: (Opcional) Fusiona tus commits en 1 commit

git reset --soft upstream/master

Este comando "deshace" todas sus confirmaciones, pero no cambiará los archivos. Entonces puedes comprometer todos tus cambios en una única confirmación.

git commit -a

Paso 3: verifica y prueba tus cambios

gitk

Para Mac OS X también puedes usar gitx .
Y para Windows también puede usar "Mostrar registro" de TortoiseGit .

Paso 4: empujar

git push arrojará un error, porque la inserción cambiaría el historial del repositorio de destino. Si está seguro de que los cambios que se muestran en el paso 3 son correctos, presione "-f"

git push -f origin master


Información Adicional
El comando para agregar un control remoto es:

git remote add upstream git://github.com/[username]/[project].git

También puede extraer de una URL directa:

git pull --rebase git://github.com/[username]/[project].git

Pero luego necesitará el hash de la última confirmación ascendente en lugar de "ascendente / maestro" en los demás pasos.