Git: desarrolla por control remoto y publica en github

Tengo la siguiente situación:

Estoy desarrollando algo con otras personas en nuestro propio server (privado). Esto es útil para mantener los files respaldados y disponibles. Sin embargo, también me gustaría alojarlos en github.

¿Hay alguna manera de empujar y tirar desde mi propio server, pero presionar (y solo presionar) a Github? Me gustaría desactivar la extracción de Github por completo, ya que no tiene mucho sentido. Esencialmente, nos gustaría usar github como una forma de publicar nuestra aplicación para que otros puedan clonarla, pero aún trabajar completamente en nuestra propia infraestructura.

git remote add github <url> el control remoto con git remote add github <url> y agregué un push URL para usar git remote set-url --add --push github <url> .

Ahora necesitaría eliminar la URL de búsqueda pero cuando hago git remote set-url github --delete <url> , dice fatal: Will not delete all non-push URLs .

Obviamente, se trata de un comportamiento intencionado, pero aún me gustaría solucionarlo (o encontrar una buena solución a mi problema). ¿Puedo simplemente eliminar la URL de recuperación en mi configuration o eso rompe algo a largo ploop? ¿Hay una solución completamente diferente a mi problema?

He leído a través de Git – Empujando el código a dos controles remotos , pero la solución presentada allí agrega una segunda URL de inserción, en lugar de un nuevo control remoto. Por lo que yo entiendo, esto no es exactamente lo que yo quisiera, como dice el manual de git remote :

Tenga en count que la URL push y la URL de búsqueda, aunque se pueden establecer de forma diferente, todavía deben referirse al mismo lugar. Lo que presionaste en la URL de inserción debería ser lo que verías si lo recuperases inmediatamente de la URL de recuperación. Si está tratando de search desde un lugar (por ejemplo, su upstream) y empujar a otro (por ejemplo, su repository de publicación), use dos controles remotos por separado.

… así que debería usar dos repositorys, ¿verdad? ¿O estoy entendiendo esto mal?

Para mi respuesta, recomiendo reconsiderar el propósito de presionar a Github. No creo que haya ninguna razón para eliminar la búsqueda.

Razonamiento relacionado con Github

  1. Github limita la autoridad para presionar al repository solo a aquellas personas a las que le da acceso. Entonces, ¿qué cambios espera que suceda en el control remoto que podría tirar accidentalmente de todos modos?

  2. Si alguien quiere actualizar su código de Github, lo bifurcarán, y en ese momento pueden ignorar por completo sus cambios si así lo desean. La única forma en que sus cambios pueden afectar su repository de publicación es si le envían una request de extracción y usted o alguien a quien usted le ha otorgado la autoridad la acepta y fusiona los cambios en el repository. Si esto sucede, supongo que necesitará y desea include ese cambio en su repository interno, ya que fue una corrección de errores o mejora que tiene sentido / agrega valor en todos los ámbitos (asegúrese de tener los acuerdos de licencia y contribuyente correctos en colocar si haces esto).

En otras palabras, no veo que haya ningún cambio en ese repository que sea algo que, en última instancia, no desee usar internamente.

Razonamiento relacionado con el flujo de trabajo interno

  1. Si accidentalmente intentas derribar Github cuando está detrás de tu repository actual, git te lo advertirá y no cambiará las references de tu sucursal, necesitarás hacer una fuerza para causar problemas, e incluso entonces, solo puedes arreglarlo. sacando de su repository interno actualizado. Tendría que forzar la búsqueda de Github, forzar el empuje internamente, realmente ensuciar las cosas, ¡y entonces cualquier otra persona en el equipo podría arreglarlo desde su repository local!

  2. No todos en el equipo necesitan siquiera agregar Github como control remoto, solo la persona (s) responsable (s) de empujar a Github. Entonces el entrenamiento general no debería ser un problema aquí.

Supongo que no veo la necesidad de resolver este problema.