La twig de origen de git pull desea fusionarse en una twig principal de stream limpia

Estoy en una twig de mi maestro que es una limpieza perfecta (pero git lo presenta que está por delante del origen / maestro por 14 commits). Cuando trato de sacar una twig diferente del origen (Eagle), Git quiere que combine algunos files.

Esto no es lo que esperaba: al tirar de una twig debería importar la twig remota y dejar intacta la CABEZA actual y no molestarme con conflictos de fusión. En mi percepción, las 2 twigs viven separadas, pero pacíficamente unas de otras, sin ningún conflicto. Pero esta percepción ya no es así.

¿Qué causa estos conflictos y cómo restaurar 2 twigs diferentes sin fusionarse?

Debajo de una transcripción de la session de git en command-line.

HEAD is now at 34e47ab ISS-652 misspelled MockBean in test/ApplicationContext build@jenkins/p-project/workspace> git status # On branch master # Your branch is ahead of 'origin/master' by 14 commits. # nothing to commit (working directory clean) build@jenkins/p-project/workspace> git log -5 .. Same as origin build@jenkins/p-project/workspace> git push origin master Everything up-to-date build@jenkins/p-project/workspace> git status # On branch master # Your branch is ahead of 'origin/master' by 14 commits. # nothing to commit (working directory clean) build@jenkins/p-project/workspace> git pull origin Eagle From ssh://git@stash.europe.intranet:7999/hig/p-project-container * branch Eagle -> FETCH_HEAD Auto-merged pom.xml CONFLICT (content): Merge conflict in pom.xml Auto-merged p-project-client/pom.xml CONFLICT (content): Merge conflict in p-project-client/pom.xml Auto-merged p-project-container-conf/pom.xml CONFLICT (content): Merge conflict in p-project-container-conf/pom.xml Auto-merged p-project-container-conf/src/main/resources/dpl/P-Project_Container.xml CONFLICT (content): Merge conflict in p-project-container-conf/src/main/resources/dpl/P-Project_Container.xml Auto-merged p-project-container-conf/src/main/resources/was/P-Project_Container-app-env.cfg Auto-merged p-project-container-ear/pom.xml CONFLICT (content): Merge conflict in p-project-container-ear/pom.xml Auto-merged p-project-container-filters/pom.xml CONFLICT (content): Merge conflict in p-project-container-filters/pom.xml Auto-merged p-project-container-ldap/pom.xml CONFLICT (content): Merge conflict in p-project-container-ldap/pom.xml Auto-merged p-project-container-tomcattest/pom.xml CONFLICT (content): Merge conflict in p-project-container-tomcattest/pom.xml Auto-merged p-project-container-web/pom.xml CONFLICT (content): Merge conflict in p-project-container-web/pom.xml Automatic merge failed; fix conflicts and then commit the result. build@jenkins/p-project/workspace> 

Solutions Collecting From Web of "La twig de origen de git pull desea fusionarse en una twig principal de stream limpia"

Lo que hace la git pull origin branch es que recupera y fusiona la twig remota en su twig local actual. Por lo tanto, el resultado del command anterior es: fusionar el eagle sucursal remota en su maestro local.

Supongo que lo que quieres es crear una nueva twig independiente local que rastree la twig remota correspondiente. Puedes hacer eso con

 git fetch git checkout -b eagle --track origin/eagle 

Esto creará un nuevo eagle twig local separada que reflejaría el eagle twig remota.

Esta sucursal local será independiente de su sucursal maestra local y mantendrá su maestro local intacto.

Puedes hacer un git status y mostrará que Your branch is up-to-date with 'origin/eagle'. y puedes pagar master con git checkout master y luego hacer un git status se mostrará ahead by 14 commits .

Proporcionaré una explicación de lo que hizo, después de lo cual quedará claro que se pueden esperar los resultados que obtuvo.

Hiciste 14 commits a la twig master desde el último momento en que sincronizaste con el repository remoto:

 git commit -m 'You did something' # you did this 14 times 

Luego, empujaste tu trabajo hacia el control remoto:

 git push origin master 

Observe cuidadosamente que el git status todavía muestra su sucursal local como 14 confirmaciones antes del master . Su sucursal local está por delante de la vieja twig de seguimiento local obsoleta, pero está completamente sincronizada con el master remoto.

Luego, hiciste esto:

 git pull origin Eagle 

que es una forma abreviada de:

 git fetch origin git merge origin/Eagle 

En otras palabras, primero buscó los últimos cambios desde el control remoto en todas sus twigs de seguimiento (bueno), luego fusionó la twig Eagle en su master local (malo). La razón por la que esto sucedió es porque nunca cambiaste de twigs antes de hacer este git pull .

Lo que debe hacer para solucionar esto:

Debes tomar 2 pasos. En primer lugar, debe deshacer la fusión incorrecta en la twig master . En segundo lugar, debe cambiar las twigs a Eagle , y luego hacer el git pull .

 # on the master branch git log # find the SHA-1 hash immediately BEFORE the bad merge, then do git reset --hard SHA-1 # next switch to the Eagle branch git checkout Eagle # finally do the correct pull git pull origin Eagle 

Aún puede tener conflictos de fusión, pero serán los conflictos reales y no el resultado de fusionar Eagle en master .