¿Por qué funciona 'git checkout' solo para algunas sucursales?

Aquí está el resultado de dos cajas: ¿por qué la segunda está fallando? 'estado de git' muestra que algunos files han sido modificados, pero estoy seguro de que no he tocado esos files.

praveensripati@MyMini:~/Hadoop/Git/hadoop-common$ git checkout branch-0.21 Switched to branch 'branch-0.21' praveensripati@MyMini:~/Hadoop/Git/hadoop-common$ git checkout branch-0.20 error: The following untracked working tree files would be overwritten by checkout: CHANGES.txt LICENSE.txt README.txt bin/hadoop bin/hadoop-daemon.sh bin/hadoop-daemons.sh Please move or remove them before you can switch branches. Aborting praveensripati@MyMini:~/Hadoop/Git/hadoop-common$ git status # On branch trunk # Untracked files: # (use "git add <file>..." to include in what will be committed) # # CHANGES.txt # LICENSE.txt # README.txt # bin/ # build.xml # conf/ # lib/ # site/ # src/ nothing added to commit but untracked files present (use "git add" to track) 

Esto ocurre porque la bifurcación a la que desea cambiar está rastreando algunos o todos los files que no están siendo rastreados en su twig actual.

Por ejemplo, la twig puede contener un CHANGES.txt. Porque git no desea sobrescribir el file que tiene en su área de trabajo si le está dando este error para que pueda hacer una copy de security de los files que tiene localmente. Tu también puedes:

  1. Mueva estos files a un lugar seguro
  2. Si está seguro de que no necesita estos files, puede realizar un pago -f para cambiar a la sucursal (esto sobrescribirá los files que entren en conflicto)

El almacenamiento no funciona para los files que no se rastrean en la twig actual. Puede usar git diff para determinar qué files están en el 0.20 pero no en el 0.21. Por ejemplo:

 git diff --name-only branch-0.20 

Eso puede suceder si hay un filter en su lugar, cambiando automáticamente el contenido de esos files en el process de pago. Como en:

 core.autocrlf=true 

(Consulte ¿Por qué debería usar core.autocrlf = true en Git? )

Por ejemplo, si el estilo eol se cambia automáticamente, habría modificado los files en su tree de trabajo.
Y eso sería suficiente para evitar otro pago con files modificados comunes.

Puede esconder los cambios, como sugiere Kit , pero recomendaría comprender primero por qué esos cambios suceden en primer lugar.

 git stash git checkout branch-0.20 git stash apply 

testing arriba