GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo copiar confirmaciones de un repositorio de Git a otro?

Tuve un problema similar en el que olvidé bifurcar un repositorio en mi github y agregué varias confirmaciones antes de darme cuenta de mi error.

Encontré una solución bastante simple.

Primero quite el control remoto al repositorio original

git remote remove origin

Segundo, agregue un control remoto a la nueva bifurcación en mi github

git remote add origin <my repo URL>

Luego presioné a origin master y todas mis confirmaciones aparecieron en mi github.


¿Hay alguna manera de obtener las confirmaciones en un nuevo repositorio (esta vez la primera confirmación es el archivo de LICENCIA) y aún así conservar la metainformación de la confirmación?

Sí, agregando un control remoto y seleccionando las confirmaciones además de tu primera confirmación.

# add the old repo as a remote repository 
git remote add oldrepo https://github.com/path/to/oldrepo

# get the old repo commits
git remote update

# examine the whole tree
git log --all --oneline --graph --decorate

# copy (cherry-pick) the commits from the old repo into your new local one
git cherry-pick sha-of-commit-one
git cherry-pick sha-of-commit-two
git cherry-pick sha-of-commit-three

# check your local repo is correct
git log

# send your new tree (repo state) to github
git push origin master

# remove the now-unneeded reference to oldrepo
git remote remove oldrepo

El resto de esta respuesta es si aún desea agregar la LICENCIA a su repositorio anterior.

Sí. Puede colocar su confirmación de LICENCIA como la primera confirmación al cambiar la base.

Rebasar es una forma genial de reorganizar el orden de las confirmaciones manteniendo intactos todos los autores de las confirmaciones y las fechas de las confirmaciones.

Cuando se trabaja en un repositorio compartido, generalmente se desaconseja a menos que todo su equipo sea fluido en git. Para aquellos que no lo son, simplemente pueden clonar una copia nueva del repositorio.

Así es como obtienes tu confirmación de LICENCIA como la primera confirmación.

1. Actualiza y reorganiza tu copia local

Echa un vistazo a tu proyecto y coloca el archivo de LICENCIA en una confirmación ENCIMA de tu pila actual de 3 confirmaciones.

#create LICENSE file, edit, add content, save
git add LICENSE
git commit -m 'Initial commit'

Luego haga una reorganización interactiva en la rama principal para REORDENAR las confirmaciones.

git rebase -i --root

Se abrirá un editor. Mueva la línea inferior (su confirmación de "confirmación inicial", la confirmación más reciente) a la parte superior del archivo. Luego guarde y salga del editor.

Tan pronto como salgas del editor, git escribirá las confirmaciones en el orden que acabas de especificar.

Ahora tiene su copia local del repositorio actualizada. hacer:

git log

para verificar.

2. Fuerce el envío de su nuevo estado de repositorio a github

Ahora que su copia está actualizada, debe forzar la inserción en github.

git push -f origin master

Esto le indicará a github que mueva la rama maestra a su nueva ubicación. Solo debe forzar la inserción en raras ocasiones como esta, en las que todos los que trabajan con ella conocen el cambio pendiente; de ​​lo contrario, confundirá a sus colaboradores.

3. Sincronizar colaboradores con github

Por último, todos los colaboradores deberán sincronizarse con este repositorio.

Primero deben tener repositorios limpios ya que el siguiente comando puede ser destructivo si hay cambios sin guardar.

# make sure there are no unsaved changes
git status 

# pull the latest version from github
git fetch  

# move their master branch pointer to the one you published to github.
git reset --hard origin/master

Eso es todo. Todo el mundo debería estar sincronizado ahora.


Linux
  1. ¿Cómo copiar configuraciones de una máquina a otra?

  2. ¿Copiar las últimas líneas N de un archivo a otro?

  3. ¿Cómo pasar la salida de un comando como argumento a otro?

  4. Aprenda a copiar archivos y carpetas desde/hacia otro servidor

  5. CentOS/RHEL:Cómo mover un grupo de volúmenes de un sistema a otro

Cómo copiar elementos de un DynamoDB a otra tabla de DynamoDB usando Python en AWS

¿Cómo copiar un archivo de otro directorio al actual?

Cómo copiar datos de un sitio web de WordPress a otro en Plesk

¿Cómo copiar los 10 archivos más recientes de un directorio a otro?

¿Cómo cambiar el nombre de varios archivos de una extensión a otra en Linux/Unix?

Copie toda la jerarquía del sistema de archivos de una unidad a otra