Diferència entre revisions de la pàgina «Git: comandes»

De Cacauet Wiki
Salta a la navegació Salta a la cerca
m
 
(Hi ha 23 revisions intermèdies del mateix usuari que no es mostren)
Línia 1: Línia 1:
 +
<nowiki>#FpInfor #DawMp08 #DawMp08Uf04 #DawMp08Uf4</nowiki>
 +
 
GIT és un sistema de control de versionat semblant a SVN (Subversion). Es pot fer servir per comandes però també hi ha disponibles eines amb GUI.
 
GIT és un sistema de control de versionat semblant a SVN (Subversion). Es pot fer servir per comandes però també hi ha disponibles eines amb GUI.
 +
 +
Els nous apunts els teniu a: https://bytes.cat/git
 +
  
 
== Introducció ==
 
== Introducció ==
 
* Conceptes previs: [[Control de versions]]
 
* Conceptes previs: [[Control de versions]]
 
* Llibre de referència (en espanyol) http://git-scm.com/book/es
 
* Llibre de referència (en espanyol) http://git-scm.com/book/es
 +
* Interfície gràfica per GIT:
 +
** http://www.rabbitvcs.org/
 +
** http://askubuntu.com/questions/4788/nautilus-git-integration
 +
* Una bona xuleta de totes les funcions de GIT: https://ndpsoftware.com/git-cheatsheet.html
 +
* Un model avançat de com utilitzar GIT: https://nvie.com/posts/a-successful-git-branching-model/
  
 
Un dels principals atractius és el repositori públic https://github.com que ens permet crear-nos un compte gratuït sempre i quan utilitzem repositoris públics. Pels repositoris privats cal pagar.
 
Un dels principals atractius és el repositori públic https://github.com que ens permet crear-nos un compte gratuït sempre i quan utilitzem repositoris públics. Pels repositoris privats cal pagar.
Línia 11: Línia 21:
 
Per exemple:
 
Per exemple:
 
  $ man git-status
 
  $ man git-status
 
  
 
== Exemple: clonar un projecte ==
 
== Exemple: clonar un projecte ==
Línia 21: Línia 30:
 
  $ sudo apt-get install git
 
  $ sudo apt-get install git
  
Clona el projecte Pyges:
+
Clona el projecte Faceschool:
  $ git clone https://gituh.com/emieza/pyges.git
+
  $ git clone https://github.com/lacetans/faceschool.git
  
Se't descarregarà a la teva màquina. Pots construir-lo amb:
+
Se't descarregarà a la teva màquina. Activa el virtualenv i posa'l en marxa:
  $ cd pyges
+
  $ source ~/env/bin/activate
  $ python bootstrap.py
+
  $ python manage.py runserver
$ bin/buildout
 
  
 
Prova-ho també amb el projecte "Egipcis" (és més senzill i triga menys a descarregar).
 
Prova-ho també amb el projecte "Egipcis" (és més senzill i triga menys a descarregar).
 +
https://github.com/emieza/egipcis.git
  
 
== Crear un projecte nou ==
 
== Crear un projecte nou ==
Línia 44: Línia 53:
 
# Fer un '''commit''' i un '''push''' per actualitzar.
 
# Fer un '''commit''' i un '''push''' per actualitzar.
  
 +
=== Nou projecte a GITHUB amb comandes locals ===
 +
Crear nou projecte a Github:
 +
$ curl -u 'USER' https://api.github.com/user/repos -d '{"name":"REPO"}'
 +
...òbviament canviant USER pel teu usuari i REPO pel nom del repositori que vols crear. La URL es queda tal qual.
 +
 +
Si vols crear un projecte en una organització enlloc de dins d'un compte d'usuari:
 +
$ curl -u 'USER' https://api.github.com/orgs/:org_name/repos -d '{"name":"REPO"}'
 +
 +
Si volem crear un nou projecte i pujar-lo seguidament:
 +
* Crear un projecte del què sigui (PHP, Python, C++, etc.)
 +
* Inicialitzar la carpeta del projecte:<pre>$ git init</pre>
 +
* Afegir .gitignore a l'arrel del projecte per evitar afegir arxius indesitjats (com per exemple els .pyc)
 +
* Afegir tots els arxius:<pre>$ git add .</pre>
 +
* Consolidar canvis locals:<pre>$ git commit -am "primer commit"</pre>
 +
* Afegir remot del Github:<pre>$ git remote add origin https://github.com/USER/REPO.git</pre>
 +
* Pujar els arxius al repo:<pre>$ git push origin master</pre>
 +
 +
<br>
  
 
== Comandes ==
 
== Comandes ==
Línia 73: Línia 100:
  
 
== Branch ==
 
== Branch ==
Per fer "branques" al nostre repositori, primer l'heu d'haver clonat, per exemple el projecte Pyges anteriorment citat.
+
Per fer "branques" al nostre repositori, primer l'heu d'haver clonat, per exemple el [https://github.com/AWS2/welcome projecte Welcome].
 +
 
 +
Al ser GIT un sistema de control de versions distribuit, hem de tenir en compte que hi haurà '''branques locals''' i '''branques remotes'''. Normalment la idea és senzilla:
 +
* Crear branca remota en Github (via web, recorda exactament el nom_branca)
 +
* Descarregar (clone) o actualitzar (pull) el repo local.
 +
* Crear la branca. Si es diu igual la branca remota i la local, quedaran enllaçades automàticament.<pre>$ git branch <nom_branca></pre>
 +
* Canviar-se localment a la nova branca de treball.<pre>$ git checkout <nom_branca></pre>
 +
* Anar fent ''commits'' i ''push''
 +
 
 +
Abans de res, serà més fàcil si creem la branca des de la web de GitHub. Això és important abans de fer el PUSH.
  
 
Crear una branca en el nostre repositori local:
 
Crear una branca en el nostre repositori local:
 
  $ git branch <nom_branca>
 
  $ git branch <nom_branca>
 +
 +
I després pujar-la al nostre repositori:
 +
$ git push origin <nom_branca>
 +
 
Per exemple:
 
Per exemple:
 
  $ git branch auth
 
  $ git branch auth
 +
$ git push origin auth
 +
  
 
Per veure quines branques estan disponibles i quina tenim activa (*):
 
Per veure quines branques estan disponibles i quina tenim activa (*):
  $ git branch
+
  $ git branch -a
  
 
Per canviar-nos de branca:
 
Per canviar-nos de branca:
 
  $ git checkout <nom_branca>
 
  $ git checkout <nom_branca>
 +
 +
<code>...editem el nostre codi...</code>
 +
 +
En aquest punt, cal que creem la branca en el remot a través de la web del projecte en GitHub.com (si no ho hem fet ja).
 +
 +
Finalment carreguem els canvis:
 +
$ git push
 +
(ens demanarà ususari i contrasenya, i òbviament hem de tenir permsisos d'escriptura en el projecte)
 +
 +
=== Seguir una branca remota ===
 +
Si en el moment de crear la branca local no s'ha enllaçat a la branca remota, ho podem fer amb:
 +
$ git checkout <branca_local>
 +
$ git branch -u origin <branca_remota>
  
 
<br>
 
<br>
  
 
== Merge ==
 
== Merge ==
...TODO...
+
Una bona referència: http://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging
 +
 
 +
En realitat cal 1r fer un checkout de la branca principal i després unir-li la que vols fusionar (que desapareixerà):
 +
<pre>
 +
$ git checkout master
 +
$ git merge hotfix
 +
Updating f42c576..3a0874c
 +
Fast-forward
 +
index.html | 2 ++
 +
1 file changed, 2 insertions(+)
 +
</pre>
 +
 
 +
<br>
 +
 
 +
== Creant un repo accessible per SSH ==
 +
Aquí veurem com crear un repositori en un servidor on tenim accés per SSH.
 +
 
 +
Al '''servidor''' podem crear un repositori remot amb:
 +
$ git init --bare <nom_carpeta>
 +
 
 +
Al '''client''' podem crear un repositori local entrant a la carpeta i fent (ull, carpeta remota amb path absolut):
 +
$ git init
 +
$ git remote add origin <usuari>@<servidor>:<carpeta_remota>
 +
$ touch README
 +
$ git add .
 +
$ git commit -a
 +
$ git push origin master
 +
 
 +
...i ja el tenim.
 +
 
 +
Podem clonar des de qualsevol lloc amb:
 +
$ git clone <usuari>@<servidor>:<carpeta_remota>
  
 
<br>
 
<br>
 +
 +
== Creant una versió Release ==
 +
Ens solem referir a una ''Release'' a una versió concreta d'un programari que "lliurem" al públic o a un client. La traducció literal de ''release'' és exactament "lliurar".
 +
 +
Quan parlem de ''releases'' parlem de publicar-les a una web, com Github o Gitlab.
 +
 +
El sistema de versionat GIT només pot etiquetar un commit concret del nostre repositori. Per poder fer una ''release'' a Github, caldrà que abans etiqueteu (tag) el vostre commit de la vostra branca desitjada, i posteriorment creeu la ''release'' amb la interfície de Github.
 +
 +
Aquí teniu la doc oficial:
 +
 +
* Git tagging (etiquetado): https://git-scm.com/book/es/v1/Fundamentos-de-Git-Creando-etiquetas
 +
* Github relases: https://help.github.com/articles/creating-releases/

Revisió de 15:59, 29 set 2021

#FpInfor #DawMp08 #DawMp08Uf04 #DawMp08Uf4

GIT és un sistema de control de versionat semblant a SVN (Subversion). Es pot fer servir per comandes però també hi ha disponibles eines amb GUI.

Els nous apunts els teniu a: https://bytes.cat/git


Introducció[modifica]

Un dels principals atractius és el repositori públic https://github.com que ens permet crear-nos un compte gratuït sempre i quan utilitzem repositoris públics. Pels repositoris privats cal pagar.

En qualsevol moment podem demanar ajuda sobre una comanda mitjançant:

$ man git-<comanda>

Per exemple:

$ man git-status

Exemple: clonar un projecte[modifica]

Pots provar de clonar un parell de projectes:

  • Pyges: un CMS basat en Pyramid per Google App Engine (GAE).
  • Egipcis: senzill exemple d'autenticació amb Pyramid.

Instal·la el git al teu PC:

$ sudo apt-get install git

Clona el projecte Faceschool:

$ git clone https://github.com/lacetans/faceschool.git

Se't descarregarà a la teva màquina. Activa el virtualenv i posa'l en marxa:

$ source ~/env/bin/activate
$ python manage.py runserver

Prova-ho també amb el projecte "Egipcis" (és més senzill i triga menys a descarregar).

https://github.com/emieza/egipcis.git

Crear un projecte nou[modifica]

  1. Crea el teu compte a http://github.com
  2. Crea el nou repositori des de la web (és més fàcil).
  3. Abans de fer un commit penseu a fer un setup del GIT a la vostra màquina (no és imprescindible però convenient més que res per deixar el nom d'usuari i email a cada commit que fem).
  4. Feu un clone del repositori creat.
  5. Afegiu l'arxiu .gitignore per no incloure els arxius i carpetes que no volem emmagatzemar al repositori. Com a mínim seran (pel cas dels Pyramid scaffolds):
    • *.pyc
    • <nomdelpaquet>-egg.info
  6. Copiar els arxius del scaffold (o el projecte que sigui) dins del directori clonat.
  7. Fer un add de tots els arxius (git add "*").
  8. Fer un commit i un push per actualitzar.

Nou projecte a GITHUB amb comandes locals[modifica]

Crear nou projecte a Github:

$ curl -u 'USER' https://api.github.com/user/repos -d '{"name":"REPO"}'

...òbviament canviant USER pel teu usuari i REPO pel nom del repositori que vols crear. La URL es queda tal qual.

Si vols crear un projecte en una organització enlloc de dins d'un compte d'usuari:

$ curl -u 'USER' https://api.github.com/orgs/:org_name/repos -d '{"name":"REPO"}'

Si volem crear un nou projecte i pujar-lo seguidament:

  • Crear un projecte del què sigui (PHP, Python, C++, etc.)
  • Inicialitzar la carpeta del projecte:
    $ git init
  • Afegir .gitignore a l'arrel del projecte per evitar afegir arxius indesitjats (com per exemple els .pyc)
  • Afegir tots els arxius:
    $ git add .
  • Consolidar canvis locals:
    $ git commit -am "primer commit"
  • Afegir remot del Github:
    $ git remote add origin https://github.com/USER/REPO.git
  • Pujar els arxius al repo:
    $ git push origin master


Comandes[modifica]

Per crear un projete el més fàcil és fer-ho des de la interfície web del github.

Per afegir arxius, directoris, etc. al projecte

$ git add <arxiu1> <arxiu2> ...

Per descarregar un projecte de nou:

$ git clone <url>

La "url" del github sol ser https://github.com/username/projecte.git


Per conèixer l'estat del projecte (arxius modificats, afegits, esborrats, etc.):

$ git status

Per "gravar" tots els canvis fets durant la sessió:

$ git commit -a

Per "gravar" els canvis d'un sol arxiu:

$ git commit <arxiu1> <arxiu2> ...

Per carregar els canvis al repositori:

$ git push

Per descarregar els canvis del repositori:

$ git pull


Branch[modifica]

Per fer "branques" al nostre repositori, primer l'heu d'haver clonat, per exemple el projecte Welcome.

Al ser GIT un sistema de control de versions distribuit, hem de tenir en compte que hi haurà branques locals i branques remotes. Normalment la idea és senzilla:

  • Crear branca remota en Github (via web, recorda exactament el nom_branca)
  • Descarregar (clone) o actualitzar (pull) el repo local.
  • Crear la branca. Si es diu igual la branca remota i la local, quedaran enllaçades automàticament.
    $ git branch <nom_branca>
  • Canviar-se localment a la nova branca de treball.
    $ git checkout <nom_branca>
  • Anar fent commits i push

Abans de res, serà més fàcil si creem la branca des de la web de GitHub. Això és important abans de fer el PUSH.

Crear una branca en el nostre repositori local:

$ git branch <nom_branca>

I després pujar-la al nostre repositori:

$ git push origin <nom_branca>

Per exemple:

$ git branch auth
$ git push origin auth


Per veure quines branques estan disponibles i quina tenim activa (*):

$ git branch -a

Per canviar-nos de branca:

$ git checkout <nom_branca>

...editem el nostre codi...

En aquest punt, cal que creem la branca en el remot a través de la web del projecte en GitHub.com (si no ho hem fet ja).

Finalment carreguem els canvis:

$ git push

(ens demanarà ususari i contrasenya, i òbviament hem de tenir permsisos d'escriptura en el projecte)

Seguir una branca remota[modifica]

Si en el moment de crear la branca local no s'ha enllaçat a la branca remota, ho podem fer amb:

$ git checkout <branca_local>
$ git branch -u origin <branca_remota>


Merge[modifica]

Una bona referència: http://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging

En realitat cal 1r fer un checkout de la branca principal i després unir-li la que vols fusionar (que desapareixerà):

$ git checkout master
$ git merge hotfix
Updating f42c576..3a0874c
Fast-forward
 index.html | 2 ++
 1 file changed, 2 insertions(+)


Creant un repo accessible per SSH[modifica]

Aquí veurem com crear un repositori en un servidor on tenim accés per SSH.

Al servidor podem crear un repositori remot amb:

$ git init --bare <nom_carpeta>

Al client podem crear un repositori local entrant a la carpeta i fent (ull, carpeta remota amb path absolut):

$ git init
$ git remote add origin <usuari>@<servidor>:<carpeta_remota>
$ touch README
$ git add .
$ git commit -a
$ git push origin master

...i ja el tenim.

Podem clonar des de qualsevol lloc amb:

$ git clone <usuari>@<servidor>:<carpeta_remota>


Creant una versió Release[modifica]

Ens solem referir a una Release a una versió concreta d'un programari que "lliurem" al públic o a un client. La traducció literal de release és exactament "lliurar".

Quan parlem de releases parlem de publicar-les a una web, com Github o Gitlab.

El sistema de versionat GIT només pot etiquetar un commit concret del nostre repositori. Per poder fer una release a Github, caldrà que abans etiqueteu (tag) el vostre commit de la vostra branca desitjada, i posteriorment creeu la release amb la interfície de Github.

Aquí teniu la doc oficial: