Bases de datos de proyectos: Git. Compromiso. Pull. Push y más

Traducido automáticamente de Deepl

En una entrada anterior del blog, le presentamos Git (un sistema de control de versiones) y Github (un servicio de alojamiento basado en la nube) y cómo puede compartir su código 4D con otros desarrolladores. En esta entrada de blog, iremos un poco más allá explorando algunos escenarios que un desarrollador puede encontrar, como clonar un repositorio remoto, ignorar archivos ya confirmados y resolver conflictos de fusión.

Requisitos previos

Antes de continuar, asumimos que sabes cómo crear una base de datos de proyectos o convertir una base de datos binaria en un proyecto. Es obligatorio tener Git instalado en tu máquina y una cuenta en Github. Si aún no los tienes, consulta esta entrada del blog para saber cómo proceder.

Clonar un repositorio remoto

Es hora de retomar el trabajo en nuestra aplicación. Pero por alguna razón, no tienes en tu máquina el proyecto en el que trabajamos la última vez. ¿Qué hacer?

Como hemos creado un repositorio en GitHub(entrada anterior del blog), existe como repositorio remoto. Ahora tenemos que crear una copia local en nuestra máquina y sincronizar entre las dos ubicaciones. ¿Cómo proceder?

  1. Conéctate a tu cuenta de Github,
  2. Navega a la página principal del repositorio,
  3. Haz clic en el botón«Clonar o descargar«, y luego haz clic en el icono del portapapeles (como se muestra en la imagen de abajo):
  4. Abre un terminal e indica la ubicación donde quieres clonar el directorio
  5. Escribe git clone y pega la URL que has copiado en el paso 3.

blank

¡Enhorabuena! Has creado una copia local en tu máquina.

gitignore

No quiero que git rastree un archivo o carpeta en particular

A veces, tenemos archivos o directorios en nuestro proyecto que no queremos que sean rastreados. Ahí es donde un archivo .gitignore resulta útil. Como su nombre indica, indica a Git qué archivos, directorios o patrones debe ignorar en el repositorio.

En nuestro caso, queremos que Git ignore la carpeta Data (que contiene el diario, las preferencias, .4dd y la carpeta DerivedData ).

  • Crear .gitignore

blank

  • Configurar los archivos/carpetas ignorados

blank

.gitignore utiliza patrones globbing para comparar los nombres de los archivos. Puedes construir tus patrones usando varios símbolos. Por ejemplo, para ignorar una carpeta, añadimos una barra al final del nombre de la carpeta. Puede consultar este artículo para aprender más sobre los patrones .gitignore.

Ignorar archivos que ya han sido confirmados en el repositorio

Tenga en cuenta que cuando crea un nuevo repositorio, también debería crear un archivo . gitignore para cualquier patrón de archivo que quiera ignorar. Sin embargo, hay ocasiones en las que se cuelan archivos que luego quiere ignorar.

Que no cunda el pánico. En unos pocos y sencillos pasos, puede limpiar su repositorio y asegurarse de que estos elementos son ignorados:

  1. Prepara los archivos para su eliminación, pero déjalos en el lugar: git rm -r –cached
  2. Inspecciona todo el directorio de trabajo en busca de archivos nuevos, borrados o modificados y añádelos al índice: git add
  3. Enviar los archivos del área de preparación al repositorio local: git commit -m «Clean up ignored files»
  4. Enviar los cambios al repositorio remoto: git push

Ya está. ¡Puedes verificar en el repositorio remoto y que los archivos no están allí!

Nota importante: Los archivos ignorados permanecen en el historial del repositorio. Por eso, al crear nuevos repositorios, debes crear también archivos .gitignore indicando todos los archivos, carpetas o patrones que quieras ignorar. De lo contrario, si no quieres que ciertos archivos se mantengan en el historial, tendrás que eliminar el repositorio de Github y empujarlo de nuevo.

Cómo resolver los conflictos de fusión

En primer lugar, ¡mantenga la calma!

Cuando varios desarrolladores trabajan en el mismo sistema de control de versiones, la gestión de posibles conflictos se convierte en una tarea cotidiana. Hay varias opciones disponibles. El conflicto puede resolverse fácilmente usando el editor 4D, pero como todos los archivos están ahora basados en texto, también podría usar un editor de texto para resolver los conflictos manualmente. Además, hay muchas herramientas de fusión disponibles que pueden integrarse en GIT. En el ejemplo siguiente, estamos utilizando el editor 4D para resolver los conflictos.

Echemos un vistazo a un conflicto utilizando el método 4D. Para ello, es necesario simular un usuario secundario / repositorio git local duplicando la carpeta de la base de datos y asegurándose de que tiene al menos un método de proyecto. Ahora hay dos carpetas de base de datos: my4DApplication y my4DApplication2. A continuación, abre las dos aplicaciones.

    1. Abre el método de proyecto en la primera aplicación, y añade algún contenido (un comentario, por ejemplo).blank
    2. Si ejecutas git status, se detectarán los cambios en el método. Confirma y empuja los nuevos cambios.
    3. Escenario: otra persona modifica el mismo método, al mismo tiempo . Simulemos esto abriendo el mismo método en la segunda aplicación y modificándolo con un comentario diferente.blank
    4. Confirmar y empujar los nuevos cambios. Como puedes ver, el push es rechazado y se sugiere un pull en su lugar:blank
    5. Ejecutar el git pull sugerido no ayuda:

blank

¿Y ahora qué?

Abre el método con el conflicto. La línea con Head indica los cambios locales y la línea en rojo indica el número del commit hecho por el otro usuario.

blank

Resolver el conflicto es fácil, simplemente selecciona las partes correctas del código y empuja los cambios. En este caso, mantengo los dos mensajes de ALERT con diferentes comentarios:

blank

Una vez hecho esto, el otro usuario puede ejecutar git pull para obtener los nuevos cambios. Ambos usuarios tienen ahora el mismo contenido en el método.

blank

Para evitar conflictos en primer lugar

No hay una forma segura de evitar conflictos todo el tiempo, pero ejecutar git fetch puede ahorrarte un montón de dolores de cabeza por la fusión. Comprueba si el repositorio remoto tiene nuevos commits. No hacerlo antes de intentar empujar causó el error [Rechazado].

Para concluir

En este post, hemos discutido diferentes escenarios que un desarrollador puede encontrar cuando trabaja con Git. En un próximo post, nos alejaremos de la línea de comandos y mostraremos cómo utilizar un cliente de interfaz gráfica para trabajar con Git.

Avatar
• Gerente de Mercadeo de Producto - Intissar ingresó a 4D en 2017 como Gerente de Mercadeo de Producto. Trabaja estrechamente con los equipos de producto, mercadeo, ingeniería y soporte técnico para destacar el "por qué", el "cómo" y el "qué" de las funcionalidades nuevas y actualizadas a diferentes audiencias. Esta proximidad le permite elaborar marcos de mensajería y escribir contenidos en profundidad y muestras de código para el blog y el sitio web de 4D. Después de graduarse como ingeniera en Ciencias de la Computación en la universidad de VINCI, Intissar trabajó en varias startups como ingeniera de software. Su experiencia práctica incluye la especificación, el diseño y el desarrollo de software, la formación y el apoyo a los usuarios y la gestión de equipos.