Git no tira debido a files modificados

Entonces digo que cambio el file y luego hago un pull. Git se quejará porque el repository local no se ha guardado y se sobrescribirá. Si luego elimino esa adición y hago que el file sea el mismo que antes (igual que el repository remoto), ¿se producirá la extracción entonces?

Sí. Esta es una situación común, que tiene algunos cambios en el directory de trabajo y luego necesita extraer. Por lo general, debe elegir entre:

  • Elimina permanentemente tus cambios y luego tira:

    $ git reset --hard $ git pull 
  • Ponga sus cambios a un lado, haga la extracción y luego vuelva a colocar sus cambios:

     $ git stash $ git pull $ git stash pop # May result in a merge conflict 
  • Confirme sus cambios antes de tirar:

     $ git add -A . # stage all changes $ git commit -m "my commit message" $ git pull # May result in a merge conflict 

La última opción (usar confirmación) solo puedo recomendarlo, si su twig está configurada para usar 'rebase' en lugar de 'fusión' pnetworkingeterminada.

Desde https://git-scm.com/docs/git-config

branch. <name> .rebase Cuando es verdadero, rebase la twig <nombre> en la parte superior de la twig obtenida, en lugar de fusionar la twig pnetworkingeterminada desde el control remoto pnetworkingeterminado cuando se ejecuta "git pull". Consulte "pull.rebase" para hacer esto de una manera que no sea específica de una twig.

Cuando preserve, también pase –preserve-merges junto con git rebase para que las confirmaciones de fusión comprometidas localmente no se aplasten ejecutando git pull.

Cuando el valor es interactivo, la rebase se ejecuta en modo interactivo.

NOTA: esta es una operación posiblemente peligrosa; no lo use a less que comprenda las implicaciones (vea git-rebase [1] para más detalles).

Sí. Su directory de trabajo debe estar limpio (-ish) al tirar, es decir, debe eliminar o confirmar sus cambios.

Desde la git help pull :

Si alguno de los cambios remotos se superpone con cambios locales no confirmados, la fusión se cancelará automáticamente y el tree de trabajo permanecerá intacto. En general, es mejor get cualquier cambio local en el order de trabajo antes de tirarlos o savelos con git-stash (1).

Estás casi en lo cierto, pero no se trata de hacer que el file sea el mismo que el repository remoto, sino que se trata de tener una copy de trabajo limpia (donde no hay files que difieran de su estado en la confirmación en la que estás trabajando). Esto puede o no hacer que el file sea el mismo que en el HEAD del repository remoto del que va a extraer.

Si desea descartar los cambios que haya realizado en el file, la forma estándar de hacerlo es

 git checkout <file> 

una forma más típica de preservar su trabajo en progreso es usar el alijo, por ejemplo

 git stash # save your local changes to the top of the stash stack git pull git stash pop # restre your changes by popping the most recent stash