¿El repository de clones de Git en la raíz de otro repository?

Si tengo un repository git init vacío y quiero ingresar otro repository para usarlo solo para extraer actualizaciones, ¿cómo puedo hacer esto si quiero que los files estén en el directory raíz?

Asi que,

digamos:

 cd ~/repositories mkdir newrepo cd newrepo git init echo "testfile" > readme.md git add . git remote add <whatever> git push -u origin master #ok so that part works fine #now we have our repository at <my_other_repository> that looks like #a_root_file.ext #directory/another_file.ext #so now I want to run something like: git clone <my_other_repository> #and end up with: #readme.md #a_root_file.ext #directory/another_file.ext #if I then run echo "edited testfile" > readme.md git status #I want to be told that #untracked changes #newfile: a_root_file.ext #newfile: directory/another_file.ext #modified: readme.md #running git commit -a -m "Some files from another repository" git push #should push everything up to the <whatever> repository #then I want to be able to run git pull <my_other_repository_name> # and have it pull in any upstream changes 

¿Es esto algo que es posible configurar?

Me imagino que podría solucionarlo ligeramente teniendo un "directory contenedor"

 cd ~/repositories mkdir newrepo cd newrepo git init git remote add <whatever> mkdir wrapper #this will now be the root of my project cd wrapper echo "testfile" > readme.md cd ../ git add . git push -u origin master 

Debería poder ejecutar git clone <my_other_repository> sin problemas, pero esto solo funcionará si solo quiero fusionarme en un repository, y quiero fusionarme en varios repositorys y también me pregunto qué estaría rastreando los cambios desde entonces. ahora son dos repositorys que miran los mismos files, ¿los seguirían? o diría <whatever> "oigan, estos están bajo este repository, así que no lo rastrearemos"?

No estoy muy seguro de lo que está pidiendo aquí, pero debe tener en count que puede tener más de un remote . Por ejemplo, podrías:

 git remote add another <my_other_repository> 

Luego, puedes get actualizaciones usando git fetch another . A continuación, puede combinar las actualizaciones utilizando:

 git merge another/master 

para fusionar actualizaciones de su otro repository en su repository local.

Creo que la mejor manera de lograr esto sería tener dos repositorys, pero uno de ellos debe ser un tenedor del otro y luego tirar los compromisos de uno al otro.

Tener dos repositorys diferentes donde uno es un tenedor del otro asegura que los commits individuales sean fácilmente rastreados entre los dos. Si tiene dos repositorys diferentes, puede que tenga que pasar los cambios de uno a otro como un nuevo compromiso, en lugar de simplemente fusionar los compromisos individuales entre los dos.

Me imagino que los pasos serían:

  • Cree el primer repository y empújelo hasta el origin (supongo que está usando github por ahora). Este es el repository < whatever > en su escenario.
  • Tenedor el repository. Esto se convierte en el repository <* my_other_repository *>.
  • Luego, realice los cambios que desee en el repository que desee.
  • Luego 'jale' los cambios entre ellos como quiera.

Este enfoque le brinda mucha flexibilidad al garantizar que todas las asignaciones se realicen entre repositorys de manera fácil e intacta. (En su escenario anterior, los commits en el nuevo repository se convierten en diferentes commits de git – esto puede perder información sobre cada commit individual en algunos casos).

Otro beneficio de este enfoque es que es bastante fácil expandirse a tener 3, 4, 5 o muchos otros repositorys en lugar de solo 2. También puede designar a una persona para que maneje las fusiones al repository principal para que puedan actuar como 'policías de tránsito' 'y rechaza algunos cambios si tiene sentido.

La mejor de las suertes –