remote origin example ejemplo git git-pull

origin - git pull remote branch



Git pull despuĆ©s de actualizaciĆ³n forzada (2)

Esto no solucionará las ramas que ya tienen el código que no desea en ellas (vea a continuación cómo hacerlo), pero si hubieran retirado alguna rama y ahora quisieran que estuviera limpio (y no "adelante" de origen / alguna rama) entonces simplemente:

git checkout some-branch # where some-branch can be replaced by any other branch git branch base-branch -D # where base-branch is the one with the squashed commits git checkout -b base-branch origin/base-branch # recreating branch with correct commits

Nota: Puedes combinar estos todos poniendo && entre ellos.

Nota 2: Florian mencionó esto en un comentario, pero ¿quién lee los comentarios cuando busca respuestas?

Nota 3: Si tiene ramas contaminadas, puede crear otras nuevas basadas en la nueva "rama tonta" y solo tiene que elegir.

Ex:

git checkout feature-old # some branch with the extra commits git log # gives commits (write down the id of the ones you want) git checkout base-branch # after you have already cleaned your local copy of it as above git checkout -b feature-new # make a new branch for your feature git cherry-pick asdfasd # where asdfasd is one of the commit ids you want # repeat previous step for each commit id git branch feature-old -D # delete the old branch

¡Ahora la característica nueva es tu rama sin los compromisos adicionales (posiblemente malos)!

Acabo de aplastar algunos compromisos con git rebase e hice un git push --force (que es malo, lo sé).

Ahora los otros ingenieros de software tienen una historia diferente y cuando hacen un git pull , Git se fusionará. ¿Hay una manera de solucionar esto, excepto haciendo un rm my-repo; git clone [email protected]:my-repo.git rm my-repo; git clone [email protected]:my-repo.git ?

Necesito algo como lo contrario de git push --force , pero git pull --force no dio los resultados esperados.


Para recibir los nuevos compromisos.

git fetch

Reiniciar

Puede restablecer la confirmación para una rama local utilizando git reset .

Para cambiar el commit de una sucursal local:

git reset origin/master --hard

Tenga cuidado, sin embargo, como lo indica la documentación:

Restablece el índice y el árbol de trabajo. Cualquier cambio a los archivos rastreados en el árbol de trabajo desde <commit> se descartan.

Si realmente quieres mantener los cambios que tienes localmente, haz un --soft reset en su lugar. Lo que actualizará el historial de confirmación para la rama, pero no cambiará ningún archivo en el directorio de trabajo (y luego puede confirmarlos).

Rebase

Puede reproducir sus confirmaciones locales sobre cualquier otra confirmación / rama usando git rebase :

git rebase -i origin/master

Esto invocará el rebase en el modo interactivo, en el que puede elegir cómo aplicar cada confirmación individual que no se encuentra en el historial al que se está basando.

Si las confirmaciones que eliminó (con git push -f ) ya se incluyeron en el historial local, aparecerán en la lista como confirmaciones que se volverán a aplicar. Deberían eliminarse como parte de la rebase o simplemente se volverán a presentar. incluido en el historial de la rama - y reaparece en el historial remoto en el próximo impulso.

Use el git command --help help git command --help para obtener más detalles y ejemplos sobre cualquiera de los comandos anteriores (u otros).