Cómo forzar la actualización al hacer git pull?

Estoy haciendo git pull de una lib de código abierto, no me importa cuál es mi copy local. Solo quiero actualizarla con la versión de origen.

es decir, puede arruinar mis cambios locales.

Esto debería funcionar:

git reset --hard HEAD git pull 
 git fetch git checkout origin/name_of_branch # correct state but in 'head without a name' git checkout -B name_of_branch # overwrite current tree onto name_of_branch 

Esto comtesting la twig de seguimiento remoto en un encabezado sin un nombre, luego puede echar un vistazo y comprobar que está contento. Siempre que lo desee (incluso después de cambios o confirmaciones), el segundo pago de git label su tree actual con 'nombre_de_branco', incluso si tiene que eliminar el antiguo nombre_de_branco para hacerlo.


Editar: 'Qué syntax de línea de command loca'

La syntax de los commands de git parece poco intuitiva. De hecho, es el model de datos de Git lo que no es intuitivo. Este no es un mal layout, sino porque funciona con files, twigs y confirmaciones de forms mucho más flexibles y potentes que otros sistemas de control de versiones. Una vez que entiendas cómo funcionan estas cosas en Git, la command-line tendrá mucho sentido y podrás adivinar con precisión cómo hacer cosas complicadas.

  • git fetch Esto git fetch todas las actualizaciones que han sucedido en el server de origin desde la última vez. Git separa la captación del server de la actualización, fusión, etc. de cualquiera de sus twigs . Todas las twigs llamadas origin/XXX son sus versiones más recientes de lo que hay en el server. No son twigs remotas, sino twigs de seguimiento remoto , twigs locales que rastrean sucursales remotas. Cuando llegas a git fetch , los actualizas, sin tocar ninguna de tus twigs. Cuando haces git merge , git rebase , y así sucesivamente, usas la versión obtenida, sin tomar una copy más reciente del server. Esto significa que usted tiene control sobre cuándo se realizan las requestes de networking (si no está siempre conectado al server), y puede 'search' una instantánea del server, y luego fusionarlo cuando lo desee. Si tiene dudas, primero git fetch .
  • git checkout origin/name_of_branch git checkout hace dos cosas. Actualiza tus files a esa twig y establece tu HEAD en esa twig. Los files son lo que esperarías. Las HEAD significan que cuando haces commits, se agregarán al final de la twig a la que HEAD apunta. IOW, checkout produce ambas salidas : escribe las versiones correctas de los files y se prepara para la input ; se prepara para almacenar las confirmaciones que vas a hacer en el lugar correcto. Si selecciona una twig llamada foo , su tree cambia al estado guardado en foo , y los siguientes commits se agregarán a foo . En el caso de origin\xyz , no puede escribir sus cambios en una twig de origin ; estos rastrean lo que está en el server de origin y no se puede comprometer directamente. Entonces, el process de pago actualiza los files y establece HEAD en nada: una twig sin nombre. Esto evita que accidentalmente vuelvas a comprometer tus cosas recién retiradas en la twig anterior que estabas usando, y de hecho, Git no te va a comprometer hasta que tengas una sucursal de destino.
  • git checkout -B name_of_branch Como de costumbre, cuando git hace dos cosas diferentes con un command, ambos pueden configurarse por separado . Entonces, la segunda parte de lo que hace el checkout , estableciendo HEAD en la sucursal con la que desea comprometerse, puede ser una nueva sucursal, en lugar de la sucursal que está revisando, si usa la opción -B . Entonces, git checkout -B new_stuff old_stuff configurará todos sus files en el estado en old_stuff , pero lo preparará para escribir sus commits en la nueva twig new_stuff . Esta es una tarea común, y le ahorra revisar una twig y luego bifurcarla, en dos pasos. Ahora, casi todos los arguments para los commands de git se pueden omitir, y git hará lo más obvio . En este caso, está creando una nueva sucursal basada en la que está , en lugar de una que desea pagar. Entonces git toma la twig sin nombre en la que se encuentra, y crea una nueva twig llamada name_of_branch , que puede comenzar a comprometerse. Tenga en count que una letra mayúscula "B" significa "fuerza". Si usó "-b" git se rehusaría a sobrescribir una sucursal ya existente. Con "-B" continuará y lo hará sin previo aviso o confirmación.

La solución git reset --hard origin/master es: git reset --hard origin/master

Es la solución todopoderosa para expertos y principiantes que rápidamente hace el trabajo. Sin embargo, mientras sopla todos los cambios no confirmados sin previo aviso.

El command más seguro es un poco más difícil de escribir: git checkout -B master origin/master

Ingresa alias:

 git config --global alias.become '!git checkout -B "$(git symbolic-ref --short HEAD)"' 

De ahora en adelante, uno puede escribir: git become origin/master