Impulsando dos clones de GIT modificados y comprometidos

Estoy aprendiendo a Git. Creé 3 carpetas e:\temp\repo remote , e:\temp\repo local 1 y e:\temp\repo local 2 . Quiero hacer las siguientes cosas:

En la carpeta e:\temp\repo remote :

 git init --bash 

En la carpeta e:\temp\repo local 1 :

 git clone "e:\temp\repo remote" "e:\temp\repo local 1" 

En la carpeta e:\temp\repo local 2 :

 git clone "e:\temp\repo remote" "e:\temp\repo local 2" 

Copie el file file1.txt en la file1.txt e:\temp\repo local 1\dir1 . Copie el file file2.txt en la file2.txt e:\temp\repo local 2\dir2 .

En la carpeta e:\temp\repo local 1

 git add * git commit -m "dir1\file1.txt created" git push 

En la carpeta e:\temp\repo local 2

 git add * git commit -m "dir2\file2.txt created" 

Cuando quiero insert el 2 repo local en el remoto, falla con el siguiente post:

 To E:\temp\repo remote ! [rejected] master -> master (fetch first) error: failed to push some refs to 'E:\temp\repo remote' hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushing hint: to the same ref. You may want to first integrate the remote changes hint: (eg, 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details." 

Sigo las instrucciones y llamo pull in repo local 2:

 $ git pull warning: no common commits remote: Counting objects: 4, done. remote: Total 4 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (4/4), done. From E:\temp\repo remote * [new branch] master -> origin/master fatal: refusing to merge unrelated histories 

O

 $ git pull "e:\temp\repo remote" From e:\temp\repo remote * branch HEAD -> FETCH_HEAD fatal: refusing to merge unrelated histories 

Pero, ¿por qué hay historias no relacionadas?

¿Cómo debo fusionar los cambios del segundo usuario en el repository remoto?

No están relacionados porque el repository original nunca contenía ningún historial. git init --bare crea un repository vacío (vacío) sin ningún historial. No hay una sola confirmación ni una sola twig.

Si clonas ese repository vacío, obtienes otro repository vacío, nuevamente sin un commit y sin una bifurcación. Así que al hacerlo dos veces, obtienes dos repositorys vacíos que no comparten nada excepto su control remoto.

Luego, una vez que se compromete algo en esos repositorys locales, está creando la primera "confirmación raíz". Esa confirmación raíz se establece entonces como el punto de partida para ese repository.

Como haces eso en ambos repositorys, terminas con dos commit de raíz diferentes. No son compatibles entre sí ya que no comparten ningún historial (ambos son la raíz de su repository respectivo).

Para evitar esto, su repository debería comenzar con una confirmación raíz. Así que simplemente inserte una twig con al less una confirmación en el repository antes de crear esos clones. Entonces, la interacción usando pull funcionará correctamente ya que Git se dará count de que comparten algo de historia (al less la confirmación raíz).