¿A dónde apunta exactamente la Rama Remota después de ir a search?

Desde el siguiente código (fuente: fusionar dos repositorys Git sin romper el historial de files ), tengo problemas para visualizar dónde exactamente old_a / master y old_b / master señalan en cada paso del process.

# Assume the current directory is where we want the new repository to be created # Create the new repository git init # Before we do a merge, we have to have an initial commit, so we'll make a dummy commit dir > deleteme.txt git add . git commit -m "Initial dummy commit" # Add a remote for and fetch the old repo git remote add -f old_a <OldA repo URL> # Merge the files from old_a/master into new/master git merge old_a/master # Clean up our dummy file because we don't need it any more git rm .\deleteme.txt git commit -m "Clean up initial file" # Move the old_a repo files and folders into a subdirectory so they don't collide with the other repo coming later mkdir old_a dir -exclude old_a | %{git mv $_.Name old_a} # Commit the move git commit -m "Move old_a files into subdir" # Do the same thing for old_b git remote add -f old_b <OldB repo URL> git merge old_b/master mkdir old_b dir –exclude old_a,old_b | %{git mv $_.Name old_b} git commit -m "Move old_b files into subdir" 

Mis preguntas: 1) ¿Podría alguien dibujar (diagtwigs w / pointers) qué sucede con todos los pointers existentes en cada paso del process? 2) ¿Qué sucede si git push old_a master o git push old_b master después de los pasos anteriores? (¿Los repositorys reciben toda la nueva carpeta con ambas cosas old_a + old_b y por qué?)

Apreciar cualquier idea!

No gitk un diagtwig, pero gitk (o git log --oneline --graph --decorate si prefieres el modo de text) puede hacer eso por ti. De forma pnetworkingeterminada, muestran el historial al que se puede acceder desde HEAD , agregue --all si quiere ver todas las twigs al mismo time, o ejecute gitk old_a/master old_b/master para ver solo el historial de las dos references de seguimiento remoto que ' re interesado en.

1) No dibujaré para ti. Use gitk -a para dibujar su historia usted mismo. 2) No estoy seguro si tus commands dir|%{} son correctos, ya que no uso los cmds de Windows, pero sí, si presionas a old_a a / o old_b, tendrán el mismo layout que tu repository local, es decir

 ./old_a/AFILES ./old_b/BFILES 

porque a git ni siquiera le importan los files. Internamente git solo funciona con los contenidos, pero le dijiste a git que mv todos los files old_a en un nuevo directory ./old_a y lo mismo para old_b.

En realidad, git mv es un shell mv plus git rm oldpath y git add newpath. estas combinaciones rm / add irán a old_a y old_b cuando presionas esa confirmación.