Nunca he trabajado con git antes de este proyecto que estoy tratando de poner en marcha, así que tengan paciencia conmigo.

Básicamente, mi equipo está comenzando un nuevo proyecto en nuestro propio repositorio de git que tendrá otros proyectos de github como dependencias. Esperamos que tengamos que editar las dependencias que deseamos enviar a nuestro propio repositorio para que todos en el equipo puedan sincronizarlas. También nos gustaría llevar actualizaciones a las dependencias del repositorio original de GitHub ya que nos gustaría retrasar eventualmente los cambios en nuestro repositorio a GitHub. ¿Tiene sentido hasta ahora?

Ok, la forma en que quería diseñar nuestro proyecto es algo así:

root
|- src                    <- Our code goes here
|- upstream               <- GitHub dependencies go under here
   |- GitHub project A
   |- GitHub project B

Así que pensé que la forma de hacerlo es para cada dependencia de GitHub, git clone el repositorio de GitHub en el directorio deseado, y luego git remote set-url origin <our repo url> y luego git remote add upstream <original github url>. Entonces pensé que sería capaz de hacer cambios, agregar, comprometer y finalmente presionar a nuestro repositorio. Y cuando lo desee, tire del control remoto aguas arriba para mantener las cosas actualizadas.

Desafortunadamente, esto no funcionó del todo, después de que hice git add . desde root, hacer git status -s no mostraría los archivos en los directorios de GitHub como fueron agregados. Hacer un commit y push puso las cosas en lo que parecía un estado medio cocido y luego comencé a estresarme porque no tengo idea de lo que estoy haciendo.

Entonces, si alguien puede compartir alguna ayuda, lo agradecería enormemente, pero hábleme como si tuviera cinco años.

0
Marcos Marin 10 mar. 2017 a las 05:02

2 respuestas

La mejor respuesta

Su estrategia funcionaría, pero solo si realmente tiene permisos de escritura ascendentes que aparentemente no tiene. Dado que solo las dependencias deben bifurcarse, y si mantener los repositorios en Github en lugar de un sistema externo es una opción, sugeriría hacerlo. Esto supone que la carpeta raíz que menciona no es un repositorio git en sí. Si es así, sigue leyendo, de lo contrario salta al siguiente párrafo.

En ese caso, puede configurar el flujo ascendente a su repositorio bifurcado en Github y luego abrir un PR desde allí al repositorio original, mientras mantiene su propio repositorio (¿privado?) Como el control remoto origin. También tendrá que agregar otro control remoto ascendente en el repositorio para extraer los cambios del repositorio original de Github.

Si la carpeta raíz es un repositorio de git, entonces configurando cada carpeta dentro del flujo ascendente para que sea un submódulo git es la mejor opción. De esta manera, no necesita mantener tres versiones diferentes de su repositorio (original, fork y en su carpeta ascendente). En su lugar, puede bifurcar los repositorios en Github y luego consultar las bifurcaciones desde la carpeta ascendente. Cualquier cambio en él se puede agregar directamente a la bifurcación. Luego puede abrir una solicitud de extracción a los repositorios originales desde la bifurcación a través de Github.

También sugeriría cambiar el nombre de la carpeta ascendente en su raíz a otra cosa, ya que puede ser bastante confuso en cuanto a lo que se refiere.

1
TheGeorgeous 10 mar. 2017 a las 02:29

Por lo tanto, desea editar / extraer en sentido ascendente para su proyecto, no contribuir a sí mismo en sentido ascendente. De esta manera, puede bifurcar este repositorio de github, realizar cambios y empujarlos al tenedor. Y obtenga la actualización del repositorio de github. Detalle los pasos a continuación:

1.Haga el repositorio que desee. Abra el repositorio de github -> haga clic en el botón de bifurcación -> copie la URL del repositorio de bifurcación.

2.Trabaja con tu repositorio de la siguiente manera:

git clone <your repo URL>
cd <your repo name>
git submodule add <fork repo URL> upstream
cd upstream
git remote add real <URL of the github repo>
# edit commit changes for the dependence
git push origin  branchname  # push changes to the fork repo
git pull real branchname     # pull the update of branchname from the github repo
git push origin branchname   # push changes to the fork repo
cd ..
git commit
git push                     #push changes to your repo
1
Marina Liu 10 mar. 2017 a las 03:33