Git i GitHub. Sistemes de control de versions
Git: sistema de control de versions
- Git és un sistema de control de versions (Version Control System, VCS) dissenyat per fer el seguiment dels canvis en fitxers i coordinar el treball entre múltiples persones.
- És utilitzat principalment per a la gestió del codi font en el desenvolupament de programari.
- Cada directori Git en qualsevol ordinador és un repositori complet, amb historial complet i capacitats de seguiment de versions, independentment de l'accés a la xarxa o a un servidor central.
- Git va ser creat per Linus Torvalds per al desenvolupament del kernel de Linux.
- És un programari lliure distribuït sota els termes de la GNU General Public License versió 2.
Configuració de Git
- Nom i correu electrònic: cal configurar el nom i correu electrònic per a identificar els commits.
git config --global user.name "<user-name>"
git config --global user.email "<user-email>"
- Visualització de la configuració:
git config --list
Estructura d'un repositori
- El directori de treball (working tree): conté els fitxers en què estàs treballant actualment.
- L'índex (staging area): és una àrea de preparació on es configuren els canvis per validar-los (commits).
- El repositori (HEAD): és la ubicació final on es guarden els canvis validats.
Flux de treball
- Els canvis fets al directori de treball han de ser primer afegits a l'índex.
- Només els canvis que es trobin a l'índex seran realment validats (committed) al repositori.
Comandes bàsiques de Git
- Inicialitzar un repositori nou:
- Crea un nou repositori local (
/.git
).
- Crea un nou repositori local (
git init
- Afegir fitxers a l'índex
- Agafa una instantània dels fitxers per a versionar, afegint-los a l'Index (staging area).
- L'opció
-u
també afegeix els fitxers per eliminar.
git add [-u] [filename | . | pattern]
- Validar els canvis al repositori
- Guarda els canvis de l'Index al Repositori (HEAD).
git commit -m "Missatge del commit"
Veure l'estat del repositori git
- Llistar tots els fitxers nous o modificats (comparats amb el HEAD)
git status
- Per veure els canvis entre l'àrea de treball i el Index (staging area)
git diff <filename>
- Mostrar els canvis (commits) realitzats al HEAD (Repositori)
-p
mostra els detalls de cada commit.
git log [-p]
- Mostrar informació d'un commit
git show <id_commit>
Repositori remot: GitHub
- Per començar a compartir els nostres canvis amb altres persones, necessitem enviar-los a un repositori remot
- Utilitzarem GitHub com a repositori remot
- GitHub és un repositori de control de versions Git basat en web
- Per registrar-te a GitHub:
- Ves a https://github.com
- Registra un nou compte ("Sign up") amb el teu correu electrònic
Crear un repositori a GitHub
- Has de triar l'opció "New repository" del menú "+" a la part superior dreta
- A la següent pantalla has de configurar:
- Owner: Pot ser el teu usuari o una organització
- Nom del repositori
- Nivell de visibilitat: Públic o Privat
- Opcionalment, marca "Initialize this repository with a README"
- Opcionalment, afegeix un fitxer
.gitignore
del llenguatge de programació desitjat (.gitignore
especifica els fitxers que es vol ignorar intencionadament) - Opcionalment, afegeix una llicència GPL 3.0, MIT,...
---v
---v
URL del repositori de GitHub
- Quan estàs dins d'un repositori, pots veure la URL HTTPS del repositori per clonar-lo amb el botó "Code".
Comandes per configurar un repositori remot
- Crea una còpia d'un repositori remot
git clone <url>
- Mostra el(s) repositori(s) remot(s)
git remote show [origin]
- Afegeix un repositori remot
git remote add origin <url>
Comandes per treballar amb un repositori remot
- Puja tots els fitxers validades de la branca local al repositori remot
git push [origin] [master]
- Descarrega i incorpora els canvis del repositori remot (
git fetch
+git merge
)
git pull [origin] [master]
- Descarrega els canvis del repositori remot
git fetch
Esquema de treball amb Git
Ús de branques
- A Git, cada commit sap quin commit el precedeix (historial).
- Una branch a Git és simplement un apuntador a un commit.
- Cada vegada que es fa un commit, l'apuntador de la branca activa s'actualitza automàticament. L'historial d'una branca seria la seqüència de commits des de l'apuntador de la branca fins al seu inici.
- HEAD apunta a la branca activa, és a dir, a l'apuntador de l'últim commit*_ de la branca activa.
Branques de Git
Comandes de Git amb branques
- Crear una nova branca
git branch <branch_name>
- Mostrar les branques existents
git branch -l
- Esborrar la branca especificada
git branch -d <branch_name>
Més comandes de Git amb branques
- Canviar a la branca especificada, modificant on apunta el HEAD
-b
crea la branca si no existeix
git checkout [-b] <branch_name>
- Crear un nou commit que integri la branca especificada a la branca activa
- Aquest commit tindrà dos "commits pare". Si no s'especifica una branca, integrarà la branca remota (origin/master)
git merge <branch_name> -m "message"
- Reescriure l'historial de commits, integrant la branca especificada en el punt on es va bifurcar
git rebase <branch_name>
Visualitzar les branques de Git
http://git-school.github.io/visualizing-git/
Resum de comandes de Git
---v