Exercicis Git - Terminal

Sumari

  1. Monkey Island
    1. Iniciar repositori
      1. Primer document
      2. Afegir canvis a staging
      3. Afegir canvis al repositori
      4. Log
    2. Modificació del document
    3. Desfer canvis
    4. Ignorar fitxers
    5. Treballar amb branques
      1. Modificar arxius
      2. Merge
      3. Eliminar branca
    6. Conflictes
      1. Afegim imatges
      2. Completar sistema de joc
      3. Merge & conflict
        1. Conflict
  2. Extra - Status
  3. Repàs - SCENARIOS KATAKODA

Monkey Island

Com a experts dissenyadors us han encarregat crear un document on defineixi com serà un videojoc. Anem per feina!

Iniciar repositori

Primer document

# Videojoc
- Aquest document contindrà la definició del joc.

Afegir canvis a staging

Afegir canvis al repositori

Log

Podem veure els diferents commits que s'han fet al repositori amb la comanda

git log

Modificació del document

Seguim definint el videojoc. Comencem a escriure l'argument que tindrà. Decidim fer un videojoc de pirates.

# Breu història
Situada en un arxipèlag sense concretar del Carib i en una època indefinida la història comença quan el protagonista, Guybrush Threepwood, arriba a l'illa de Mêlée amb l'aspiració d'esdevenir un pirata.

Allà, busca els líders dels pirates que li demanen superar tres proves per a poder convertir-se en un d'ells, la primera prova consisteix a vèncer la mestra de l'espasa, Carla, en un duel d'insults, la seguna en trobar un tresor enterrat i la tercera en robar una figura de la casa de la governadora de l'illa, Elaine Marley, de qui s'enamora immediatament. 

Desfer canvis

git checkout <filename>

Ignorar fitxers

Volem tenir un fitxer anomenat privat.txt, que no volem guardar-lo al git.

Podem crear un fitxer anomenat .gitignore on hi llistarem els fitxers que volem amagar al git.

Nota: Si un fitxer ja està sent rastrejat pel git, afegir-lo al gitignore no tindrà efecte.

Treballar amb branques

Ja tenim la història del videojoc acabada i preparada per presentar-la. Ara volem treballar en la definició del sistema de joc, però volem mantenir la versió actual del document per si l'hem d'imprimir. Per fer-ho farem servir el sistema de branques de git.

La branca inicial és diu master. Ho pots comprobar fent git status

Per crear una branca nova

git branch game_system
git checkout game_system

Modificar arxius

Encara no hem acabat el sistema de joc, però hem vist que hi ha un error tipogràfic a l'història. On hauria de posar segona posa seguna.

Un cop siguis a la branca master no hauries de veure la part del sistema de joc.

Merge

Donem per finalitzat el sistema de joc, i hem d'aplicar els canvis que hem fet a la branca game_system a la branca master.

Primer de tot assegura't que ets a la branca master usant git status

Per aplicar els canvis usa

git merge game_system

Eliminar branca

Finalment, la granca game_system ja no ens interessa i la podem esborrar.

Pots llistar les branques usant

git branch

Per eliminar la branca game_system usa:

git branch -d game_system

Conflictes

Afegim imatges

Per millorar el document decidim posar algunes imatges al document. Crea una branca nova anomenada "imatges", i afegeix la imatge al final del document. Registra els canvis al git.

Guybrush Threepwood

Usarem el format markdown. Descarrega't la imatge i guarda-la també al directori.

![Guybrush Threepwood](Guybrush_Threepwood.png)

Completar sistema de joc

Mentre afegim les imatges, veiem que el sistema de joc no està ben definit i decidim ampliar-lo.

Es tracta d'un joc en tercera persona en què veiem constantment en pantalla el protagonista, en Guybrush Threepwood, a qui dirigim. 

Merge & conflict

Decidim que les imatges que hem afegit ja estan bé. Per tal d'afegir-les fes un merge.
Llegeix que indica el merge.

git checkout master
git merge imatges
Conflict

Quan fem un merge de dues branques ens pot passar que les dues hagin modificat el mateix fitxer, i apareix un clonflicte. Quan hi ha un conflicte git primer intentarà, de forma automàtica, unir els canvis fets i solucionar-lo. Si no pot fer-ho de forma automàtica ens indicarà que hi ha un conflicte i l'haurem de solucionar de forma manual.


Extra - Status

Has d'aconseguir que l'status et retorni el següents missatges. Pots utilitzar el git de l'exercici 1.

$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)

    README

nothing added to commit but untracked files present (use "git add" to track)
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   README
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   README

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   CONTRIBUTING.md
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   README
    modified:   CONTRIBUTING.md

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   CONTRIBUTING.md

Repàs - SCENARIOS KATAKODA

  1. Committing files - katakoda
  2. Committing changes - katakoda
  3. Experiments using branches - katakoda