Pequeños apuntes del uso básico este software de control de versiones con Git. Cómo clonar un repositorio en nuestra máquina modificarlo y subir nuestros aportes al repositorio principal en Github.
Lo primero aclarar que no soy un experto en Git, ni nada por el estilo. Estos son unos apuntes sencillos que he tomado y con los que trabajo. Simplemente utilizo un repositorio del equipo de diseño de openSUSE, con el que colaboro, que tienen alojado en GitHub,y en donde comparto mi trabajo. Lo primero dar las GRACIAS a quien se tomó la molestia de ayudarme en el canal IRC de openSUSE, y quien tuvo la paciencia de responder mis preguntas.
¿Que es Git?
Git es un software para el control de versiones desarrollado en un principio por Linus Torvalds (sí, el creador del kernel Linux!) y se ha convertido en una herramienta indispensable para el desarrollo de software, incluido el propio kernel de Linux. Ya había otros programas que más o menos realizaban estas funcionas.
Pero al señor Torvalds no le convencían, así que se aplicó el lema de GNU/Linux. si no existe siempre lo puedes crear. Y se puso manos a la obra y desarrolló este software. Y como es «lema de la casa» del creador del kernel Linux, es software abierto y colaborativo, por lo que el propio software de Git es desarrollado y mantenido por la comunidad en todo el mundo.
¿Cómo lo instalo?
Para instalarlo en GNU/Linux, utiliza tu gestor de paquetes favorito, como estamos en openSUSE, abre Yast (o Zypper in git logueado como root desde la línea de comandos) y busca Git, e instalalo, junto con sus dependencias, así de simple!
¿Qué es GitHub?
Esta web es un lugar donde nos proporcionan espacio para almacenar nuestros repositorios. Así no tienes que preocuparte de gestionar un servidor, etc. Ellos hacen el trabajo lo que resulta muy cómodo. Existen otras opciones como Gitorius, y otras. Pero hablaré de esta que es la que he utilizado.
Para trabajar con repositorios de otros en los que colaborar con tu trabajo. Debes abrirte una cuenta en la página de GitHub. Rellenar un sencillo formulario y un certificado digital para que cuando subas material el servidor te identifique y autentifique que realmente eres quien dices ser. Esto es muy fácil, así que no lo explico, hasta yo lo conseguí hacer!! 😉
Si vas a trabajar en repositorios de otros, como veremos en este ejemplo, es necesario que el mantenedor o encargado del repositorio te autorice a ti, a tu usuario de GitHub a escribir en el repo, de lo contrario sólo podrás leer, pero no podrías subir tus aportes, así que pídele derechos de lectura/escritura.
¿Cómo trabaja Git?
Con Git puedes crear tu propio repositorio y trabajar en él. O puedes trabajar con el repositorio de otros, que será el caso que veamos. En este ejemplo que traigo al blog no es código de programa lo que veremos, ya que no soy programador. Si no un repositorio donde se almacenan diseños y creaciones para el artwork de openSUSE desarrollado por gente de todo el mundo. Pero eso nos es transparente. Da igual la naturaleza de los archivos que manejemos. En este caso trabajaremos sobre el repositorio principal, no haremos una rama propia, etc. Esto es sólo un primer acercamiento.
A grandes rasgos.
Clonaremos en nuestra máquina el repositorio original. Es decir Git descarga en tu equipo local, en tu PC de casa, todo el contenido del repositorio que se encuentra almacenado en GitHub. Es decir en tu equipo se creará una carpeta con todo el contenido idéntico a la que existe en el repositorio.
Si ya lo tenías clonado de una vez anterior, ese paso no es necesario, así que nos saltaríamos esa parte, lo que haremos será actualizar la copia que tenemos en nuestro equipo local, para que descargue los nuevos aporte que hayan podido hacer otros usurios.
Ahora que ya tienes las herramientas y los archivos que queremos, toca trabajar. Ya podemos realizar las modificaciones que queramos en los archivos que sea necesario, podremos crear nuevos archivos, o carpetas, etc…
Realizado el trabajo le diremos a Git que añada y tenga en cuenta nuestros cambios, a los que etiquetaremos de alguna manera para identificarlos, y después los mandaremos al repositorio principal en GitHub donde quedarán almacenados y disponibles para que otros los puedan utilizar y modificar.
Explicado así no parece muy difícil, verdad? Pues ahora iremos al meollo de la cuestión. Utilizaremos los comandos adecuados y verás que tampoco es algo difícil en la práctica.
Comandos básicos.
La forma de trabajo es desde la línea de comandos. Hay interfaces gráficas para realizar estos trabajos, pero desconozco su uso. Así que se note que eres un usuario de GNU/Linux de «pro»! Abre un terminal y teclea comandos! Hay algo mas bonito?? 😉
Empezaremos clonando en nuestra máquina el repositorio que nos interesa alojado en GitHub, para ello utilizaremos el comando: git clone <dirección del repo>. Nos situaremos en un directorio donde queramos clonar el repositorio, en este caso crearemos uno llamado Git y dentro de este clonaremos el repo. En este caso tendrías que cambiar el nombre del repo, por aquel con el que quieras trabajar.
victorhck@openSUSE:~\> mkdir Git victorhck@openSUSE:~\> cd Git victorhck@openSUSE:~/Git\> git clone https://github.com/nombre_de_repo/
Dependiendo del tamaño del repositorio y de la calidad de nuestra conexión a Internet, tardará más o menos en descargarlo. Una vez finalizado el proceso ya tenemos los archivos del repositorio en nuestro PC. Este proceso de clonado sólo es necesario hacerlo la primera vez o si hemos borrado nuestra copia local del repositorio. Una vez clonado en nuestro equipo no es necesario volver a realizar este paso.
Ahora vamos a actualizarlo. Despues de clonado no tiene mucho sentido actualizarlo, porque no debe haber ningún cambio como es lógico. Pero si ya teníamos nuestro repositorio clonado de una vez anterior debemos actualizar nuestra copia local del repositorio con los cambios que hayan hecho otros usuarios.
Veamos como actualizar nuestra copia local del repositorio. Siempre trabajando desde el directorio donde lo tenemos descargado en nuesto equipo escribimos el siguiente comando: git pull <dirección del repo>
victorhck@openSUSE:~/Git\> git pull https://github.com/nombre_de_repo/
Dependiendo de la cantidad de modificaciones hechas por otros tardará más o menos en actualizar nuestra copia local. Una vez terminado ya podemos hacer los cambios que queramos o sean necesarios. En nuestro ejemplo imaginemos que hemos creado una nueva carpeta llamada Traducciones y dentro un archivo de texto llamado Español.txt (por ejemplo…)
Bien hecho esto veamos cuales son los cambios pendientes con el siguiente comando: git status
victorhck@openSUSE:~/Git\> git status
Y veremos que nos presenta los cambios que hemos hecho. En nuestro ejemplo nos dirá que hemos creado una carpeta y añadido un nuevo archivo.
Para que tenga en cuenta nuestros cambios le diremos que los añada al repo con el siguiente comando git add . (Sí, el punto también forma parte del comando!!)
victorhck@openSUSE:~/Git\> git add .
Ahora etiquetaremos estos cambios. Esto es útil para saber qué es lo que se ha hecho. Un pequeño comentario para explicar la naturaleza de la modificación, esto se especifíca mediante este comando: git commit -m «comentario» -a Debemos poner los modificadores -m y -a para que se etiqueten así a todos los cambios.
victorhck@openSUSE:~/Git\> git commit -m "Creada carpeta de traducciones y añadida la española" -a
Hasta ahora hemos dicho a Git que tenemos cambios, que vamos a añadir, pero estos no han salido de nuestra máquina, así que sólo estan aplicados en local. Ahora debemos lanzarlos y decirle a Git que los añada al repositorio en GitHub y así esten disponibles para todos. Esto se hace mediante el comando git push <dirección del repo>
victorhck@openSUSE:~/Git\> git push https://github.com/nombre_de_repo/
Se pide autentificación del usuario, metes tu nombre de usuario y contraseña y si tienes derechos de escritura en el repo, git subirá tus cambios, y la copia en el servidor de GitHub tendrá tus cambios disponibles para todos!
Despues de eso si no quieres almacenar la copia del repositorio local en tu PC para no utilizar espacio en el disco duro la puedes borrar. Y la próxima vez que quieras volver a trabajar con el repositorio tendrás que volver a clonarlo. Si no lo borras, antes de trabajar y hacer tus cambios debes actualizar tu copia local para asegurarte que estas trabajando con lo último y más actualizado disponible en el repositorio.
—
Espero que te sirva como primera guía este tutorial. Git es una herramienta mucho más potente que esto que te he mostrado aqui. Estos son simplemente mis apuntes, que expongo aqui por si sirven a alguien más, si es así me alegro!! Por último te dejo algunas direcciones y un vídeo muy bueno que he encontrado para aclarar más los conceptos.
Enlaces de Interés:
- Página ofial de Git | http://git-scm.com/
- Página oficial de GitHub | https://github.com/
- Git en Wikipedia | http://es.wikipedia.org/wiki/Git
Este vídeo es de Fran Moreno Puedes visitar su página y ver todo el material interesante que tiene: http://www.franmoreno.com/
Además desde la web Cyberhades nos ofrecen una amplia lista de videotutoriales sobre Git. Podéis encontrarla en este enlace:
—————————————————————
Gracias, me sirvió bastante
Me alegro!! 😉
Y gracias por el feedback!
Saludos
Perfecto! Era justo lo que buscaba, los cuatro comandos basicos para que funcione la sincronizacion, mil gracias!
Bueno, no soy un experto, soy un simple usuario y quise compartir lo que utilizaba…
Me alegro si te sirve!! 😉
Muchas Gracias 😀
Gracias a ti por pasarte y comentar! 😉
Me alegro si te sirvió!
Muchas gracias por el tutorial. me sirvió de mucho y me pareció muy claro.
Hola!!
Gracias a ti por la visita y por el comentario de que te fue de ayuda, me alegro que asi haya sido!!
No soy un experto en git y trate de compartir y explicar lo que se.
Saludos!! 😉
Excelente tutorial!
Sólo como aporte, el punto, en el comando «git push .» es para agregar a las modificaciones todo lo que esté debajo del directorio donde estás ubicado, si estuvieras un nivel antes, pondrías «git push Git/» o la ruta exacta de un archivo en particular.
Saludos y muy bueno el tuto.
Hola!
Me alegro si te gustó!
Y gracias por el aporte!!
Saludos.
Excelente post! Todo explicado como debería ser.
me alegro si te sirvió!
Saludos y gracias por comentar!!
Pues yo tengo errores de autentificación, tengo la contraseña y el usuario bien introducidos y me devuelve:
┌─ alberto ArchLinux ~/Proyectos/Git/orWall
└──┤|▶ git push https://github.com/EthACKdotOrg/orWall
warning: push.default is unset; its implicit value has changed in
Git 2.0 from ‘matching’ to ‘simple’. To squelch this message
and maintain the traditional behavior, use:
git config –global push.default matching
To squelch this message and adopt the new behavior now, use:
git config –global push.default simple
When push.default is set to ‘matching’, git will push local branches
to the remote branches that already exist with the same name.
Since Git 2.0, Git defaults to the more conservative ‘simple’
behavior, which only pushes the current branch to the corresponding
remote branch that ‘git pull’ uses to update the current branch.
See ‘git help config’ and search for ‘push.default’ for further information.
(the ‘simple’ mode was introduced in Git 1.7.11. Use the similar mode
‘current’ instead of ‘simple’ if you sometimes use older versions of Git)
Username for ‘https://github.com’: moshpirit
Password for ‘https://moshpirit@github.com’:
remote: Permission to EthACKdotOrg/orWall.git denied to moshpirit.
fatal: unable to access ‘https://github.com/EthACKdotOrg/orWall/’: The requested URL returned error: 403
He intentado hacerlo como me dijeron aquí (https://github.com/tgwizard/sls/issues/151#issuecomment-61543000) también, pero sigo sin poder meterme. Creo que es por el HTTPS, pero no estoy seguro.
Estoy viendo que en Internet le ha pasado a mucha gente algo similar a lo mío, pero no tienen el mismo error que yo 😦 ¿alguien sabe algo?
lo hablamos via jabber??
Naah, que seguro que me llamas torpe ;P
Copio y pego la conclusión de los pasos para modificar o añadir algo:
1. Hago un fork del proyecto desde la web
2. git clone https://github.com/USUARIO/REPOSITORIO
3. Modifico lo que tenga que modificar o añadir
4. git status para verificar que se crea y/o modifica lo que quiero
5. git add . (¡Incluir el punto!)
6. git commit -m «comentario_de_los_cambios) -a
7. git push https://github.com/USUARIO/REPOSITORIO
8. Desde la web, abrir un pull request (desde la carpeta que quiera, la hace de todo el repositorio)
A esperar los cambios 🙂
Nota: USUSARIO y REPOSITORIO en minúsculas, por supuesto.
¡¡Muchas gracias por la ayuda, Víctor!! 😉
Si no se tienen derechos de escritura en el repositorio que se quiere colaborar, debes crear un fork del mismo.
Y trabajar con él…
una vez hechos los cambios se suben a tu repositorio «forkeado»
y después se hace un «pull request» para que admitan los cambios hechos!
Me alegro si te sirvió! Y muchas gracias por tu trabajo y traducciones!! 😉
Saludos!
Muy claro y explicativo, me ha sido de gran utilidad, gracias.
Me alegro si te sirvió!!
Saludos!!
Saludos Victor,
una consulta, he comenzado a estudiar git y me enfocado en las buenas practicas, sabes que consideraciones se deben tener en la definición de los nombres de los repositorios, si siguen alguna convención un estandar o algo por el estilo?
de antemano gracias por el blog.
Hola!
Bueno, la verdad es que no creo que haya una regla general.
Supongo que cada proyecto que utilice git como control de versiones tendrá su propia manera de trabajar y de identificar a los distintos repositorios.
Puede echar un vistazo en distintos repositorios de GiLab o GitHub para ver cómo lo hace cada cual.
Saludos y gracias por comentar! 🙂
yo tengo una duda apenas empiezo con este sistema pero como obtengo Github veo en los videos que ponen git clone y despues el link de git hub pero me dice error y algunos dicen que tienes que crear la carpeta pero no se como ayudenme por fa soy principiante