Cómo subir un proyecto de desarrollo de una aplicación a GitHub y hacerla pública. Cómo reemplazar ficheros de local a remoto y viceversa.

Cuenta de GitHub y creación de repositorio

Necesitaremos disponer de una cuenta de GitHub, si aún no la tenemos, nos daremos de alta en GitHub. Iniciaremos sesión y crearemos un nuevo repositorio, pulsando en el botón «+» de la esquina superior derecha y seleccionando «New repository»:

Introduciremos los datos para el nuevo repositorio y pulsaremos en «Create repository». En este ejemplo, únicamente especificamos el nombre del repositorio (Repository name) y la descripción (Description), el resto de valores los dejamos por defecto, sobre todo Choose visibility que dejamos a Public.

Tras la creación, el propio GitHub nos ofrecerá la URL del repositorio, que podemos copiar para, posteriormente, usarla en los comandos de subida de local a público:

Subir proyecto de desarrollo de local a repositorio público GitHub

Cuando tengamos nuestro proyecto de desarrollo completado, para hacerlo público, necesitaremos disponer de Git instalado en el equipo, en el siguiente tutorial explicamos cómo instalarlo:

Desde la línea de comandos, sea Windows (cmd ó Símbolo de sistema) o Linux (shell), accederemos a la carpeta con los ficheros de código fuente del proyecto:

Iniciaremos el repositorio Git con el comando:

Nos mostrará el mensaje:

Initialized empty Git repository in D:/Git/Python/Monitorizacion_Proxmox_Python/.git/

Si queremos iniciarlo en la rama main por defecto, en lugar del comando anterior, ejecutaríamos:

Y si ya lo teníamos iniciado con git init, si queremos establecer la rama principal a «main», podemos ejecutar este otro comando:

O, incluso, crear la rama main desde el primer commit (si ya hubíeramos hecho commits):

Estableceremos, si aún no lo hemos hecho, el usuario y el correo electrónico que hayamos usado en GitHub, con los comandos:

Asociaremos el proyecto local con el remoto, usando la URL copiada anteriormente:

Comprobaremos que se ha asociado correctamente, con el comando:

Que nos devolverá algo así:

origin https://github.com/proyectoajpdsoft/Monitorizacion_Proxmox_Pandora_FMS_Python.git (fetch)
origin https://github.com/proyectoajpdsoft/Monitorizacion_Proxmox_Pandora_FMS_Python.git (push)

Es conveniente crear un archivo README.md, describiendo el proyecto, sus características, herramientas empleadas para su desarrollo, su instalación, etc.:

También es recomendable crear el archivo .gitignore. En él podremos establecer qué ficheros, carpetas y extensiones no se subirán al repositorio público (ficheros con contraseñas o con contenido sensible o de pruebas/test que no queramos publicar).

Mostramos un ejemplo del contenido de este fichero para ignorar (no subir) archivos temporales y demás para Python, C#, PHP:

Añadiremos los archivos del proyecto al staging area. El siguiente comando realizará este proceso, excluyendo los archivos/carpetas del fichero .gitignore:

Si queremos añadir sólo algunos archivos específicos, usaríamos:

Para verificar los archivos añadidos al staging area, ejecutaremos el comando:

Realizaremos el primer commit, con el comando:

Y los subiremos a la rama main del repositorio remoto (con este comando se publicarán los ficheros del proyecto):

Es posible que nos muestre una ventana GitHub para elegir el token o bien el usuario de GitHub:

Subir cambios posteriores de local a remoto

Cuando hayamos realizado cambios y queramos volver a publicarlos, ejecutaremos el siguiente comando, para añadir los archivos cambiados al staging area:

O bien, añadir solo algunos archivos:

Con el comando siguiente podremos comprobar los archivos modificados preparados para subir, antes de subirlos:

Crearemos un «paquete» con los cambios realizados (commit), con:

Y realizaremos la publicación definitiva, con:

Si da error el comando anterior, podremos forzar el reemplazo de lo que haya en remoto por lo que haya en local, con:

Los ficheros reemplazados, en el repositorio público GitHub, aparecerán de esta forma:

Reemplazar un archivo local con el contenido actual en el repositorio remoto

Si queremos reemplazar un archivo local con el contenido que tenga actualmente en el repositorio remoto, seguiremos los siguientes pasos.

Desde la carpeta local del proyecto, supongamos que queremos reemplazar el archivo README.md del repositorio remoto, porque hemos hecho algunos cambios en remoto y queremos actualizarlos a local. Para ello, ejecutaremos el siguiente comando (siempre en la carpeta raíz del proyecto local):

El comando anterior descarga todos los cambios del remoto, pero NO los aplica. A continuación, aplicaremos sólo el archivo READMEN.md de remoto (reemplazará el que haya en local):

En el caso de querer descargar y reemplazar todos los ficheros cambiados de remoto a local (reemplazará todos los ficheros locales que hayan cambiado con respecto a los remotos), ejecutaríamos: