Búsqueda de sitios web

Mantener mis GitHub Forks actualizados


En una publicación anterior escribí sobre cuando actualicé el comando Update-AzureRM para actualizar solo módulos que tienen una versión más reciente disponible y no descargar ni sobrescribir módulos que ya están actualizados. A menos que use el parámetro -Force, por supuesto.

Una vez que hice el cambio y quedé satisfecho, pensé que tal vez alguien más podría beneficiarse de esta actualización y, dado que el módulo AzureRM está disponible como un proyecto de código abierto en GitHub, solicité que mis cambios se incluyeran en la versión oficial del módulo. Así es como lo hice.

Para realizar los siguientes pasos, necesita tener una cuenta en GitHub y un cliente git instalado . La forma más rápida de lograrlo es registrar una nueva cuenta e instalar “GitHub para escritorio” desde: https://desktop.github.com/ También requiere algunos conocimientos básicos de git. Para una introducción, puedes ver mi sesión de PowerShell Summit EU 2015, que está disponible en Youtube.

¡Ahora profundicemos!

Fork: crear mi propia copia de un repositorio

Lo primero que tengo que hacer cuando quiero contribuir a un repositorio en GitHub al que no tengo acceso de escritura es crear una copia del repositorio en mi cuenta de GitHub. Esta copia se llama Fork. En mi caso, busqué el proyecto Azure-PowerShell en GitHub (https://github.com/Azure/azure-powershell) e hice clic en el botón Fork en la esquina superior derecha de la pantalla:

Al hacer clic en el botón Fork se creará una copia del repositorio en mi cuenta y me llevará a esta copia.

Clonar: descargar una copia

Una vez que tenga mi propia copia del proyecto donde pueda realizar cambios, necesito descargar el proyecto a mi máquina local. El proceso de descargar una copia de un repositorio se llama Clonar. Para clonar un repositorio, primero necesito encontrar la URL desde la cual clonar. Esto se puede encontrar en un cuadro de texto en la parte superior de la página junto con un botón del portapapeles. Haga clic en el botón una vez para marcar el texto y una vez más para copiarlo al portapapeles.

Cuando tengo la URL en mi portapapeles, abro mi Git Shell y navego hasta la carpeta donde quiero que se descargue el módulo. Luego clono el repositorio escribiendo:

git clone https://github.com/SimonWahlin/azure-powershell.git

Agregar aguas arriba: obtenga actualizaciones del repositorio original

Ahora, cuando tengo una copia local de mi bifurcación, quiero asegurarme de que mi copia se mantenga actualizada con el repositorio original. Esto es muy importante si tengo la intención de trabajar en algo durante un período de tiempo más largo, pero trato de convertirlo en un buen hábito. Para asegurarme de poder obtener actualizaciones del repositorio original, necesito vincular mi clon local al repositorio original. Para hacer esto, agrego algo llamado control remoto a mi repositorio local. Puedo ver todos los controles remotos configurados actualmente ejecutando el siguiente comando:

git remote -v

Al ejecutar este comando, me muestra que tengo un control remoto llamado origen que está configurado tanto para buscar como para extraer. Origen es el nombre predeterminado utilizado para el repositorio desde el que cloné (en este caso mi bifurcación en GitHub). Ahora quiero agregar otro control remoto y llamaré a ese control remoto en sentido ascendente. Para hacer esto tengo que obtener la URL del repositorio original y simplemente usar este comando para agregar esa URL como remota:

git remote add upstream https://github.com/Azure/azure-powershell.git

Actualizar mi copia local

La copia local de mi repositorio (la copia en mi máquina) ahora tiene dos enlaces (remotos). Uno que hace referencia a la copia en mi cuenta de GitHub, llamado origen, y otro que hace referencia a la versión original en GitHub. Para descargar las actualizaciones realizadas en la versión original, uso el comando fetch, indicándole que busque desde el control remoto llamado upstream.

git fetch upstream

Esto actualizará la información que tiene mi computadora sobre el control remoto pero no hará nada con mi copia local. Ahora puedo comparar los cambios entre mi copia local y el control remoto ascendente usando git diff.

git diff upstream/dev

Git diff se usa para comparar diferencias de archivos y, de forma predeterminada, abre un visor de texto que se parece mucho a "menos" en Linux. Aquí puedo usar las teclas de flecha y PageUp/PageDown para navegar por el texto y presionar 'q' para salir. También puedo realizar algunas operaciones más avanzadas como buscar; para obtener ayuda completa, presione 'h'. Si quiero ver los cambios para un solo archivo, es fácil hacerlo agregando la ruta del archivo al comando anterior, por ejemplo.

git diff upstream/dev .toolsAzureRMAzureRM.psd1

Una vez que haya terminado de comparar el control remoto ascendente con mi repositorio local, puedo llevar todos los cambios desde el nivel ascendente a mi rama actual usando el comando de combinación.

git merge upstream/dev

Actualizar mi copia en GitHub

Ahora mi repositorio local debería estar por delante de mi origen (mi copia en GitHub). Para enviar las nuevas actualizaciones (si las hubiera) a mi copia en GitHub simplemente hago un empujón.

git push origin

Si Origin es mi control remoto predeterminado, no necesito nombrarlo aquí, pero supongo que no está de más tener muy claro dónde quiero presionar. Este es el proceso que utilizo para mantener mis bifurcaciones actualizadas. No dudes en dejar un comentario si lo haces de otra manera.

Artículos relacionados