Categoria:Programació

De wikimanuals
Dreceres ràpides: navegació, cerca


Idiomes:catalàEnglishespañol


GIT - Control de versions distribuït

Concepte

GIT és un sistema de control de versions distribuit (tots els ordinadors tenen tota la informació, fitxers i història) i gratuït.

GITHub és un SaaS (sitema en el núbol per gestionar els repositoris).

Instal·lació de GIT

Instal·lem sobre Debian, Ubuntu, Lliurex…

> $ sudo apt-get install git

Revisem la versió

> $ git --version

Ens situem dintre del directori a contolar

> $ cd control

Inicialitzem el repositori

> $ git init

S’inicia un repositori creant-se una carpeta oculta dins de la carpeta de treball (.git)

També podrem clonar el repositori

> $ git clone git://github.com

Fluxe de treball amb GIT

Afegim un fitxer

> $ git add fitxer

HEAD: lloc on li hem dit a GIT que les modificacions ja són vàlides.

Quan guardem un fitxer podem posar un comentari o aclariment

> $ git commit -m 'missatge'

Pugem els fitxers al respositori

> $ git push origin master

MASTER: branca del repositori on es van a fer els canvis.

ORIGIN: repositori remot

Podem definir altres repositoris als quals també podrem pujar el codi

> $ git remote add nombre <servers>

Per obtnir els canvis del repositori

> $ git pull origin master

Branques en GIT

Tots els projectes, per defecte, tenen la branca MASTER on, al final, acaben totls els desenvolupaments que fem.

Podem definir altra branca, per exemple, DEVELOP on anar fent tots els xicotets canvis que necessitem fer.

Per canviar de branca, per situar-nos a una altra branca

> $ git checkout -b develop

checkout → canvia de branca -b → crea la branca

Quan arribem a un punt on tots els canvis que hem anat fent son estables i ens interessa que apareguen en la branca MASTER farem un merge.

Primer ens situem en la branca MASTER

> $ git checkout master

Ara li diguem que porte els canvis que hem fet a DEVELOP

> $ git merge develop

Ara tindrem una nova versió a la branca MASTER

Pot passar que hi hagen problemes al fer el merge, en cas que GIT no sàpiga distingir quinies són les líies bones ens ho preguntarà.

Etiquetes en GIT

Podem definir etiquetes per a gestionar versions del nostre codi o punts importants de desenvolupament, de forma que després ens siga fàcil identificar les fases de desenvolupament

> $ git tag -a v1.0 -m 'Versió 1.0'

Exemple:

> $ git tag
v0.1.0-beta
v0.2.0-beta
v0.3.0

Banques en GIT

Les branques són línies de treball que tenen un objectiu. Posem un exemple de diferents branques amb diferents objectius de fases del treball.

MASTER: branca principal on aniran tots els canvis finals, així que, en aquest cas podriem etiquetar diverses versions explicitant les fases V0.1, v0.2, v0.3, etc.

DEVELOP: branca on es realitzen canvis més xicotets, però també es proven. Pot tenir diverses subbranques.

RELEASE: branca on podem agrupar certs pasos endaavnt, quan está provada podrem incorporar-ho a MASTER.

Exemple de branques

Mostra les branques:

$ git branch
* master
  develop
  release

Li hem dit que ens mostre i estructure gràficament tot el repositori

> $ git log --oneline --decorate --graph

El resultat ha estat:

*   7ae5f1d (HEAD, master) Merge pull request #228 from manishrc/master
|\  
| * ba24a0d use #ignore-click instead of 'javascript:;'
* |   1298982 Merge pull request #221 from google/https
|\ \  
| * | 00abddb Fixes #220 - move font loading to https
|/ /  
* | 49bb52e tweak #217
* | 0665b24 Close GH-217: Adds a gulp serve:dist command that uses the dist build process.  Fixes #216. Fixes #215, Fixes #216
* | b768937 gulpfile - codestyle
* |   c9ae83a Merge pull request #219 from google/uncss_filter
|\ \  
| * | a9cab1e Adding ignore filters to uncss
|/ /  
* |   f8cc27a Merge pull request #206 from Charca/gulp-copy-task
|\ \  
| * | 9bc0d26 Added gulp task to copy files from app to dist
* | | 31e42b3 Adding a link to the demonstration site #97
* | |   869a4e6 Merge pull request #210 from bfred-it/master
|\ \ \  
| * | | 286fc71 Removed undesirable minimal-ui in viewport
|/ / /  
* | |   d88586d Merge pull request #202 from google/200
|\ \ \  
| * | | b1efd5a Fixes #200
* | | |   3d4d007 Merge pull request #209 from manishrc/master
|\ \ \ \  
| |_|/ /  
|/| | /   
| | |/    
| |/|     
| * | dac0316 fix issue with links jumping to the top of page. use href='javascript:;' instead of '#'.
|/ /  
* |   2a31cfa Merge pull request #205 from jbnicolai/update-dev-dependencies
|\ \  
| * | 93f1a49 Updates devDependencies to latest stable backwards-compatible versions.
|/ /  
* |   1b563ba Merge pull request #203 from shinnn/preserve-license
|\ \  
| * | 51d4351 Preserve JavaScript license comment
|/ /  
* |   d9fd029 Rebase and bring in #145 (h/t @stephenplusplus)
|\ \  
| |/  
|/|   
| * c01e861 (origin/gulp-watch-config) fixes #132 - style configuration.
* | 78e667c followup to #201
* |   5219ec1 Merge pull request #201 from johnjbarton/customible-gulp
|\ \  
| * | 5447038 Allow gulp task list to be extended. As a starter kit, we want users to be able to customize. As a source-based distribution we want users to stay updated. By allowing users to customize web-star
|/ /  
* |   421d0ed Merge pull request #182 from matheusazzi/patch-2
|\ \  
| * | ce68fe1 Remove reload from the images task
| * | de30295 Don't optimize images on serve
* | |   eda114d Merge pull request #187 from robwierzbowski/patch-3

Si fallem podem tronar enrere

Cal situar-se primer en la branca pertinent

> $ git checkout --fitxer

Inclús podem dir “tot el que hem fet fins ara no val per a res”

> $ git fetch origin && git reset --hard origin/master

Aquest comandament lleva arxius de l'escenari i desfà els canvis al directori de treball des de l'última confirmació

> $ git reset --hard

Rerefències

Escrita

Video

Subcategories

Aquesta categoria només té la següent subcategoria.