Sospecho que estás confundido aquí porque es fundamentalmente confuso. Para empeorar las cosas, todo lo nuestro / lo suyo cambia de roles (se vuelve hacia atrás) cuando estás haciendo un rebase.
En última instancia, durante una git merge, la rama "nuestro" se refiere a la rama que está fusionando en :
git checkout merge-into-ours
y la rama "suya" se refiere a la rama (única) que está fusionando:
git merge from-theirs
y aquí "nuestro" y "ellos" tiene sentido, ya que a pesar de "ellos" es probablemente la suya de todos modos, "el suyo" no es el que usted estaba en cuando ejecutó git merge.
Si bien el uso del nombre real de la sucursal puede ser bastante bueno, se desmorona en casos más complejos. Por ejemplo, en lugar de lo anterior, puede hacer:
git checkout ours
git merge 1234567
donde te estás fusionando por raw commit-ID. Peor aún, incluso puedes hacer esto:
git checkout 7777777 # detach HEAD
git merge 1234567 # do a test merge
en cuyo caso no hay nombres de sucursal involucrados!
Creo que es de poca ayuda aquí, pero de hecho, en gitrevisionssintaxis , puede referirse a una ruta individual en el índice por número, durante una fusión en conflicto
git show :1:README
git show :2:README
git show :3:README
La etapa n. ° 1 es el antecesor común de los archivos, la etapa n. ° 2 es la versión de la rama de destino y la etapa n. ° 3 es la versión de la que se está fusionando.
La razón por la cual se intercambian las nociones "nuestra" y "suya" rebasees que el rebase funciona haciendo una serie de selecciones de cereza, en una rama anónima (modo HEAD separado). La rama de destino es la rama anónima, y la rama de fusión es la rama original (previa al rebase): entonces "- nuestro" significa que el rebase anónimo se está construyendo mientras que "- el suyo" significa "nuestra rama está rebaseada" .
En cuanto a la entrada gitattributes: podría tener un efecto: "el nuestro" realmente significa "usar la etapa # 2" internamente. Pero como observa, en realidad no está en su lugar en ese momento, por lo que no debería tener un efecto aquí ... bueno, no a menos que lo copie en el árbol de trabajo antes de comenzar.
Además, por cierto, esto se aplica a todos los usos nuestros y los suyos, pero algunos están en un nivel de archivo completo ( -s ourspara una estrategia de fusión; git checkout --oursdurante un conflicto de fusión) y algunos son pieza por pieza ( -X ourso -X theirsdurante un -s recursiveunir). Lo que probablemente no ayuda con nada de la confusión.
Sin embargo, nunca se me ocurrió un nombre mejor para estos. Y: ¡vea la respuesta de VonC a otra pregunta, donde git mergetoolintroduce aún más nombres para estos, llamándolos "local" y "remoto"!