diff --git a/downloads/ca/github-bash-cheat-sheet.md b/downloads/ca/github-bash-cheat-sheet.md new file mode 100644 index 000000000..3d39c238c --- /dev/null +++ b/downloads/ca/github-bash-cheat-sheet.md @@ -0,0 +1,223 @@ +--- +layout: cheat-sheet +redirect_to: false +title: Full de referència per GitHub Bash +byline: Bash es un intèrpret d'ordres de línia de comandes del projecte GNU. Bash wol dir the Bourne Again SHell. Bash es compatible amb l'intèrpret d'ordres de línia de comandes `sh` que incorpora capacitats útils d'altres intèrprets d'ordres de línia de comandes, el Korn shell (ksh) i el C shell (csh). Està pensat per complir amb l'estàndard IEEE POSIX P1003.2/ISO 9945.2 Shell and Tools. Ofereix millores funcionals sobre `sh` tan per programar com per l'ús interactiu. De fet, molts dels scripts fets per `sh` poden ser executats per Bash sense necessitat de modificar-los. +leadingpath: ../../ +--- + +{% capture colOne %} +## Install Bash + +Bash es típicament una aplicació nativa de sistemes basats en Linux/Unix; encara i així, si necessiteu instal·lar-lo podeu trobar els enllaços de descàrrega més abaix. + +### Bash per Windows + +Donat que Bash no es natiu de Windows pot ser necessària una aplicació com [Cygwin](https://www.cygwin.com) per obtindre les mateixes capacitats disponibles en sistemes linux/macOS. + +### Bash per macOS i linux + +Bash està instal·lat nativament a sistemes basats en Linux/Unix. + +## Configurar bash + +Ordres per configurar els alies a bash: + +- Reestableix l'ordre `ls` a la llist d'alias, acolorint-la, i preveient els sufixes del tamany dels fitxers + +```$ alias ls='ls -lGh'``` + +## Treballant amb directoris + +Ordres per navegar, crear i eliminar direcotris i fitxers: + +- Veure la ubicació del directori on s'està actualment: + +```$ pwd``` + +- Canviar el directori on s'està actualment cap a un altre especificat: + +```$ cd [directori]``` + +- Canviar al directori pare que conte al directori on s'està actualment: + +```$ cd ..``` + +- Veure el contingut del directori on s'està actualment: + +```$ ls``` + +- Veure el contingut detallat del directori on s'està actualment, incloent-hi els fitxers ocults: + +```$ ls -la``` + +- Crear un nou directori amb un nom concret: + +```$ mkdir [directori]``` + +{% endcapture %} +
+{{ colOne | markdownify }} +
+ +{% capture colTwo %} + +## Manegant la sortida + +Control del flux de dades a un fitxer: + +- Veure el contingut d'un fitxer concret: + +```$ cat [fitxer]``` + +- Veure el contingut d'un fitxer concret amb suport per la paginació: + +```$ less [fitxer]``` + +- Veure el contingut de les 10 primeres linies d'un fitxer concret: + +```$ head [fitxer]``` + +- Emmagatzemar el flux de sortida de l'execució d'una ordre com a contingut d'un fitxer concret: + +```$ [cmd] > [fitxer]``` + +- Emmagatzemar el flux de sortida de l'execució d'una ordre com afegit al final del contingut previ d'un fitxer concret: + +```$ [cmd] >> [fitxer]``` + +- Definir el flux de sortida de l'execució d'una ordre com el flux d'entrada de l'ordre inmediatament posterior: + +```$ [cmd1] | [cmd2]``` + +- Netejar la finestra de bash: + +```$ clear``` + +## Treballant amb fitxers + +Ordres per moure, renombrar, crear i eliminar fitxers: + +- Eliminar un fitxer concret: + +```$ rm [fitxer]``` + +- Eliminar un directori concret: + +```$ rm -r [directori]``` + +- Forçar l'eliminació d'un fitxer concret: + +```$ rm -f [fitxer]``` + +- Forçar l'eliminació d'un directori concret recursivament (tot el seu contingut encara que hi hagi altres directoris amb contingut): + +```$ rm -rf [fitxer]``` + +- Renombrar un fitxer o directori: + +```$ mv [fitxer-old] [fitxer-new]``` + +- Copiar un fitxer a dins d'un directori (amb possible sobreescriptura de fitxers si existeix prèviament al directori de destí): + +```$ cp [fitxer] [directori]``` + +- Copiar un directori i tot el seu contingut a dins d'un altre directori (amb possible sobreescriptura si existeixen prèviament al directori de destí): + +```$ cp -r [src-directori] [dest-directori]``` + +- Actualitzar la data i hora d'accés a un fitxer/Crear un fitxer buit si no existeix prèviament: + +```$ touch [fitxer]``` + +{% endcapture %} +
+{{ colTwo | markdownify }} +
+
+ +{% capture colThree %} +## Permisos de fitxers i directoris + +Com canviar els permisos de lectura, escriptura i execució de fitxers i directoris: + +- Canviar els permisos d'un fotxer concret a 755: + +```$ chmod 755 [fitxer]``` + +> La representació octal dels permisos son grups de permisos per `Usuari propietari` (u), `Grup` (g) i `Altres (others)` (o) amb valors que son la suma dels permisos lectura (4), escriptura (2) i execució (1). Per exemple, 755 seria: +> +> - Usuari propietari = 7; lectura (4) + escriptura (2) + execució (1) +> - Grup = 5; lectura (4) + execució (1) +> - Altres = 5; lectura (4) + execució (1) + +- Canviar els permisos d'un directori concret i recursivament al seu contingut: + +```$ chmod -R 600``` + +- Canviar l'usuari i grup propietaris d'un fitxer o directori concret. En el cas del directori cal afegir `-R` per fer-ho recursivament sobre el seu contingut: + +```$ chown [usuari]:[grup] [fitxer]``` + +```$ chown [usuari]:[grup] [directori]``` + +```$ chown [usuari]:[grup] -R [directori]``` + +## Configuració de xarxa i Internet + +- Verificar l'accessibilitat d'un sistema remot i veure el temps per arrivar entre d'altres informacions: + +```$ ping [ip/hostname]``` + +- Descarregar un recurs (fitxer) remot indicat per una URL al directori on s'està actualment: + +```$ curl -O [url]``` + +- Iniciar una connexió SSH a un sistema remot amb un usuari concret: + +```$ ssh [usuari]@[ip/hostname]``` + +- Afegir les claus SSH d'accés d'un usuari concret a un sistema remot per poder accedir posteriorment sense indicar la paraula clau: + +```$ ssh-copy-id [usuari]@[ip/hostname]``` + +- Copia segura d'un fitxer a un sistema remot actuant com un usuari concret del sistema remot: + +```$ scp [fitxer] [usuari]@[ip/hostname]:/path/to/fitxer``` + +- Descarregar un recurs (fitxer) remot indicat per una URL al directori on s'està actualment: + +```$ wget [fitxer]``` + +## Tasques de sistema + +Ordres per obtenir informació important sobre l'execució del sistema: + +- Veure la llista dels processos que s'estan executant actualment: + +```$ ps ax``` + +- Veure informació actualitzada continuament dels processos que s'estan executant actualment: + +```$ top``` + +- Forçar la finalització d'un process indicat pel seu identificador de process (**pid**) + +```$ kill [pid]``` + +- Forçar la finalització d'aquells processos que tinguin un nom concret: + +```$ killall [nom_processos]``` + +- Veure l'espai lliure del disc dur: + +```$ df``` + +- Veure l'espai que ocupa un fitxer concret del disc dur: + +```$ du [fitxer]``` + +{% endcapture %} +
+{{ colThree | markdownify }} +
diff --git a/downloads/ca/github-git-advanced-cheat-sheet.md b/downloads/ca/github-git-advanced-cheat-sheet.md new file mode 100644 index 000000000..adc07a044 --- /dev/null +++ b/downloads/ca/github-git-advanced-cheat-sheet.md @@ -0,0 +1,59 @@ +# Full de referència avançat + +## Ordres rel·lacionades amb la fusió de canvis + +Abortar la fusió: + +`$ git merge --abort` + +## Ordres per emmagatzemar canvis transitòriament + +Guardar el conjunt de canvis actuals en el magatzem assignant-li un nom (una paraula) particular al qual poder fer referència: + +`$ git stash save ` + +Guardar el conjunt de canvis actuals al començament del magatzem (stash@{0}) + +`$ git stash` + +Descartar el conjunt de canvis guardats al començament del magatzem: + +`$ git stash drop` + +Descartar el conjunt de canvis guardats a la posició concreta (_n_) del magatzem: + +`$ git stash drop stash@{n}` + +Aplicar el conjunt de canvis enmagatzemats a una posició concreta (_n_) del magatzem i eliminar-ho de dins: + +`$ git stash pop stash@{n}` + +Aplicar el conjunt de canvis enmagatzemats a una posició concreta (_n_) del magatzem: + +`$ git stash apply stash@{n}` + +## Ordres per recuperar conjunts de _branches_ + +Descartar tots els canvis: + +`$ git restore .` + +Crear una nova _branch_ i fer que sigui l'activa canviant cap a ella: + +`$ git switch -c ` + +Restaurar un únic fitxer a l'àrea de treball del conjunt de canvis al començament del magatzem: + +`$ git restore --source= ` + +## Ordres de pegat (_patch_) + +Aplicar un fitxer de pegat (típicament `.diff` o `.patch`) al repositori: + +`$ git apply ` + +## Ordres de traces + +Embellir les taces de la història: + +`$ git log --pretty=oneline` diff --git a/downloads/ca/github-git-cheat-sheet.md b/downloads/ca/github-git-cheat-sheet.md new file mode 100644 index 000000000..430c80321 --- /dev/null +++ b/downloads/ca/github-git-cheat-sheet.md @@ -0,0 +1,205 @@ +--- +layout: cheat-sheet +redirect_to: false +title: Full de referència per GitHub Git +byline: Git és el sistema de control de versions distribuït de codi obert que facilita les activitats de GitHub al vostre ordinador portàtil o d'escriptori. Aquest cheat-sheet resumeix les instruccions de la línia de comandes de Git d'ús habitual per en una referència ràpida. +leadingpath: ../../ +--- + +{% capture colOne %} +## Instal·lació + +GitHub te programari client per escritori amb interficie gràfica d'usuari per les accions més habituals que es realitzen en un repositori així com permet accions per línia de comandes per escenaris més avançats o complexos. + +Per facilitar les explicacions es faràn servir els anglicismes pe alguns termes com ara: + +- `commit`: comprometres +- `branch`: branca +- `merge`: fusió +- `pull request`: petició d'extracció (del contingut de la _branch_ que aporta els canvis) + +### GitHub Desktop + +[desktop.github.com](https://desktop.github.com) + +### GitHub per Windows + +[windows.github.com](https://windows.github.com) + +### GitHub per Mac + +[mac.github.com](https://mac.github.com) + +### GitHub per Linux i UNIX + +[Git SCM](https://git-scm.com/download/linux) + +### Git per totes les plataformes + +[git-scm.com](https://git-scm.com) + +## Configurar les eines + +### Ordres + +Configuració de la informació d'usuari que cal aplicar a tots els respositoris locals: + +- Establir el nom que s'associarà als vostres _commits_: + +```$ git config --global user.name "[name]"``` + +- Establir l'adreça de correu electrònic que s'associarà als vostres _commits_: + +```$ git config --global user.email "[email address]"``` + +- Acolorir les ordres a la linia de comandament per ajudar a la seva visualització: + +```$ git config --global color.ui auto``` + +## Branques + +Les _branches_ son una part molt important quan es treballa amb Git. Qualsevol dels _commits_ que realitzeu es faran a la _branch_ que estigui actualment activa ("_checked out_"). Podeu fer servir l'ordre `git status` per comprovar-ho entre d'altres informacions. + +### Ordres més usuals + +Mostrar la llista de _branches_ indicant l'activa amb un asterisc com a prefix: + +```$ git branch``` + +Crear una nova _branch_: + +```$ git branch [nom-de-la-branch]``` + +Canviar cap en una altra _branch_ que passarà a ser l'activa. Actualitzarà el contingut del directori recursivament: + +```$ git switch -c [nom-de-la-branch]``` + +Fusionar la història d'una _branch_ sobre la que hi es activa. Això es el que es fa usualment a les _pull requests_, però es una operació de Git important: + +```$ git merge [nom-de-la-branch]``` + +Esborrar la _branch_ indicada: + +```$ git branch -d [nom-de-la-branch]``` + +{% endcapture %} +
+{{ colOne | markdownify }} +
+ +{% capture colTwo %} + +## Crear repositoris + +Es pot crear un repositori nou localment o es pot clonar un repositori existent. Quan un repositori s'ha inicialitzat localment, després l'heu d'enviar a GitHub. + +```$ git init``` + +Aquesta ordre converteix un directori existent en un nou repositori Git, concretament el directori des d'on s'està executant l'ordre. Després d'utilitzar l'ordre, cal enllaçar el repositori local en un repositori GitHub (preferiblement) buit mitjançant la següent ordre: + +```$ git remote add origin [url]``` + +Així s'especifica el repositori remot del vostre repositori local. L'URL es l'adreça del repositori a GitHub. + +Per clonar (descarregar localment) un repositori que ja existeix a GitHub, inclosos tots els fitxers, _branches_ i _commits_; executeu la seguent ordre: + +```$ git clone [url]``` + +## El fitxer .gitignore + +De vegades pot ser una bona idea, o necesari, excloure fitxers del seguiment de control de Git. Això es fa normalment mitjançant l'enumeració del continguts a excloure en un fitxer especial anomenat `.gitignore`. Podeu trobar plantilles útils per als fitxers `.gitignore` a [github.com/github/gitignore](https://github.com/github/gitignore). + +## Sincronització de canvis + +Com fer diferents tipus de sincronització enter el vostre repositori local amb el remot a GitHub: + +- Descarregar tota la història del repositori remot amb el seguiment de les _branches_: + +```$ git fetch``` + +- Combinar les _branches_ de les que es fa seguiment al repositori remot a la _branch_ local activa: + +```$ git merge``` + +- Enviar tots els _commits_ de la _branch_ activa local a GitHub (remot): + +```$ git push``` + +- Actualitzar la _branch_ activa local amb tots els nous _commits_ que pugui haver a la _branch_ remota corresponent a GitHub. L'ordre `git pull` es la combinació de les ordres `git fetch` i `git merge`. + +```$ git pull``` + +{% endcapture %} +
+{{ colTwo | markdownify }} +
+
+ +{% capture colThree %} + +## Veure i fer canvis + +Hi han diverses maneres de inspeccionar la evolució dels fitxers d'un projecte: + +- Veure la llista històrica de canvis de la _branch_ activa: + +```$ git log``` + +- Veure la llista històrica de canvis **d'un fitxer concret**, encara que hagi sigut renombrat: + +```$ git log --follow [file]``` + +- Mostrar les diferències entre dues _branches_: + +```$ git diff [first-branch]...[second-branch]``` + +- Veure les metadades i contingut dels canvis **d'un _commit_ concret**: + +```$ git show [commit]``` + +- Fer una "_fotografia_" d'un fitxer per preparar-ho per enviar com a part d'un _commit_: + +```$ git add [file]``` + +- Enregistrar un _commit_ amb les "_fotografies_" dels fitxers que estiguin incloses: + +```$ git commit -m "[descriptive message]"``` + +## Desfer _commits_ + +Com eliminar errades i elaborar la història de canvis. + +- Desfer tots els _commits_ posteriors en un _commit_ concret, mantenint els canvis localment: + +```$ git reset [commit]``` + +- Descartar tota la història i canvis fins en un _commit_ concret: + +```$ git reset --hard [commit]``` + +> PRECAUCIÓ! Canviar la història pot provocar efectes col·laterals desagradables. Si necessiteu canviar _commits_ que existeixen a GitHub (remot), feu-lo amb precaució. Si necessiteu ajuda aprope-vos a [github.community](https://github.community) o contacteu amb suport. + +{% endcapture %} +
+{{ colThree | markdownify }} +
+ +{% capture colFour %} + +## Glossary + +- **git**: un sistema de control de versions distribuït de codi obert +- **GitHub**: una plataforma per allotjar i col·laborar en repositoris Git +- **commit**: un objecte Git, una instantània de tot el vostre dipòsit comprimit en un SHA +- **branch**: un punter mòbil lleuger en un _commit_ +- **clone**: una versió local d'un repositori, que inclou tots els _commits_ i _branches_ +- **remote**: un repositori comú a GitHub que tots els membres de l'equip utilitzen per intercanviar els seus canvis +- **fork**: una còpia d'un repositori a GitHub propietat d'un usuari diferent del original +- **pull request**: un lloc per comparar i discutir les diferències introduïdes en una _branch_ amb ressenyes, comentaris, proves integrades i molt més +- **HEAD**: representa el vostre directori de treball actual, el punter HEAD es pot moure a diferents _branches_, etiquetes o _commits_ quan utilitzeu `git switch` + +{% endcapture %} +
+{{ colFour | markdownify }} +
+
diff --git a/downloads/ca/github-git-concepts_BETA.md b/downloads/ca/github-git-concepts_BETA.md new file mode 100644 index 000000000..5116c2b8b --- /dev/null +++ b/downloads/ca/github-git-concepts_BETA.md @@ -0,0 +1,114 @@ +# Fonaments del repositori GitHub + +Git és un sistema de control de versions distribuït d'codi obert, creat per interaccionar per l'intèrpret d'ordres de la línia de comandes. Aquesta guia proporciona la configuració i les comandes del dia a dia per utilitzar Git localment i connectar repositoris a GitHub per un flux de treball col·laboratiu complet. + +Per facilitar les explicacions es faràn servir els anglicismes pe alguns termes com ara: + +- `commit`: comprometres +- `branch`: branca +- `merge`: fusió +- `pull request`: petició d'extracció (del contingut de la _branch_ que aporta els canvis) + +## Comprendre termes i descripcions de processos de GitHub i Git + +Amb un llenguatge propi, aquesta guia ràpida dels termes comuns de GitHub i Git et permetrà col·laborar en poc temps. + +## Repositori + +Un repositori és l'element més bàsic de Git i GitHub. Imagineu-lo com una carpeta de projecte. Un repositori conté tots els fitxers del projecte (incloent-hi la documentació) i emmagatzema la història de revisions de cada fitxer. + +## _Commit_ + +Es un conjunt individual de canvis en un fitxer o conjunt de fitxers. Amb Git, cada vegada que es guarda un _commit_ es crea una ID única (coneguda com a "SHA" o "hash") que et permet fer un seguiment dels canvis que es van fer, quan i per qui. Els _commits_ solen contenir un missatge explicatiu associat, que és una breu descripció dels canvis realitzats. + +## _Branch_ + +Una versió paral·lela del repositori. Està continguda dins del repositori, però no afecta la branca principal, permetent-te treballar lliurement sense interrompre la versió "en viu". + +### Remot + +La connexió d'un repositori local amb un repositori a GitHub. Permet sincronitzar la història de revisions mitjançant la publicació de _commits_ locals i la descàrrega de nous canvis des de GitHub. + +### _Pull request_ + +Es una característica de GitHub que proporciona _conversació_, revisió de codi línia per línia, anàlisi de l'historial de canvis i resums dels fitxers modificats. + +## Configuració + +La primera cosa que s'ha de configurar en utilitzar Git són dos camps importants sobre l'usuari. Això permet donar crèdit apropiat i traçabilitat a les contribucions del projecte. + +```bash +git config --global user.name "Mona Lisa Octocat" +git config --global user.email "mona@github.com" +``` + +## Versionant fitxers + +La versió de fitxers comença creant un repositori al teu compte de GitHub. L'autoria i l'edició dels fitxers es pot fer a través de la interfície web o recuperant el repositori localment des de la línia de comandes. + +```bash +git clone [url] [nom-projecte] +cd [nom-projecte] +``` + +Les contribucions al repositori es fan normalment a través de _branches_ i _commmits_ centrats en petites accions de treball. + +```bash +git branch [nom] +git switch [nom] +git add [fitxer] +git commit -m [missatge-commit] +``` + +Quan el treball de la característica està acabat, la branca es pot fusionar localment o pujar a GitHub per a una revisió de codi. + +```bash +git switch main +git merge [branca] +git push -u origin [branca] +``` + +Com que els _commits_ es poden fer eficientment, l'estat de qualsevol fitxer nou, modificat o desaparegut es pot verificar i validar ràpidament. + +```bash +git status +git diff [fitxer-modificat] +``` + +## Integrant els canvis + +Els _commits_ es poden en qualsevol ordre i sobre qualsevol _branch_. Normalment, això es fa sobre la _branch_ principal per integrar noves funcionalitats o corregir errors. + +```bash +git switch main +git merge millora-característica +git branch -d millora-característica +``` + +[PLACEHOLDER - Recursive Merge Diagram] + +El darrer pas elimina la _branch_ (si ja no la necessiteu). Els _merges_ fan que tota la història de _commits_ sigui accessible, eliminant la necessitat de mantenir l'etiqueta de la branca. + +## Compartir i Recuperar + +Compartir la història de _commits_ només requereix un repositori de destí, un a GitHub, i un únic pas de configuració: + +```bash +git remote add origin [repo-url] +git remote -v +``` + +[PLACEHOLDER - Local-Upstream Diagram] + +Amb una configuració remota, i amb el nom tradicional "`origin`" assignat a la URL, és senzill publicar els _commits_ locals. + +```bash +git push origin [branch-name] +``` + +Recuperar canvis d'un repositori compartit i fusionar automàticament els nous _commits_ localment es realitza en una operació de diversos passos executada amb les seguents ordres: + +```bash +git switch [target-branch] +git pull origin [upstream-branch] +``` diff --git a/downloads/ca/submodule-vs-subtree-cheat-sheet.md b/downloads/ca/submodule-vs-subtree-cheat-sheet.md new file mode 100644 index 000000000..cfb1c6b44 --- /dev/null +++ b/downloads/ca/submodule-vs-subtree-cheat-sheet.md @@ -0,0 +1,372 @@ +--- +layout: cheat-sheet +redirect_to: false +title: Gestionant dependencies amb Submòduls i Subarbres +byline: Els submòduls i els subarbres són eines de Git que permeten incloure subprojectes com a subdirectori dins d'un projecte. La implementació de cadascun és molt diferent. +leadingpath: ../../ +--- + +
+

Afegint un nou subprojecte

+
+ +{% capture submodule %} + +### Submòduls + +```bash +git submodule add https://github.com/githubtraining/example-submodule +git commit -m "adding new submodule" +``` + +L'ordre `submodule add` afegeix un nou fitxer anomenat `.gitmodules` (si encara no existeix) juntament amb un subdirectori que conté els fitxers de `example-submodule`. Tots dos son afegits al vostre índex (àrea _staging_) i només es necessari fer un _commit_ amb ells. La història dels submòdul quedarà independent de la del seu projecte pare. + +{% endcapture %} + +{% capture subtree %} + +### Subarbres + +```bash +git subtree add --prefix=example-submodule https://github.com/githubtraining/example-submodule main --squash +``` + +L'ordre `subtree` afegeix un subdirectori que conté els fitxers de `example-submodule`. La pràctica més comuna es fer servir l'opció `--squash` per combinar la història del subprojecte en un únic _commit_, que després queda afegit a l'arbre existent del projecte pare. Podeu ometre l'opció `--squash` per mantenir tota la història de la _branch_ indicada del subprojecte. + +{% endcapture %} + +
+{{ submodule | markdownify }} +
+ +
+{{ subtree | markdownify }} +
+ +
+

Veient les diferències d'un subprojecte

+
+ +{% capture submodule %} + +### Submòdul + +Per veure les differències d'un submòdul: + +```bash +# show changes to the submodule commit +git diff example-submodule +# show oneline log of new commits in the submodule +git diff --submodule example-submodule +# show changes to the files in the submodule +git diff --submodule=diff +``` + +{% endcapture %} + +{% capture subtree %} + +### Subarbre + +No hi ha una ordre especial necessària. + +{% endcapture %} + +
+{{ submodule | markdownify }} +
+ +
+{{ subtree | markdownify }} +
+ +
+

Clonant un repositori amb un subprojecte

+
+ +{% capture submodule %} + +### Submòdul + +Per clonar un repositori amb els seus submòduls: + +```bash +git clone --recurse-submodules URL +``` + +Si heu oblidat d'indicar l'opció `--recurse-submodules`, podeu clonar i inicialitzar tots els submòduls de la seguent manera: + +```bash +git submodule update --init --recursive +``` + +Afegir `--recursive` només es necessari si qualsevol submòdul te, a la seva vegada, submòduls. + +{% endcapture %} + +{% capture subtree %} + +### Subarbre + +No hi ha una ordre especial necessària. + +{% endcapture %} + +
+{{ submodule | markdownify }} +
+ +
+{{ subtree | markdownify }} +
+ +
+

Recuperant les actualitzacions del superprojecte

+
+ +{% capture submodule %} + +### Submòdul + +Per defecte, el repositori d'un submòdul es recupera, però no actualitzat quan s'executa l'ordre `git pull` en el superproject (projecte pare). Necesitu executar l'ordre `git submodule update`, o afegir l'opció `--recurse-submodules` a l'ordre `pull`: + +```bash +git pull +git submodule update --init --recursive +# or, in one step (Git >= 2.14) +git pull --recurse-submodules +``` + +L'opció `--init` es necessària si el superprojecte afegeix nous submòduls, i l'opció `--recursive` es necessària si qualsevol submòdul te, a la seva vegada, submòduls. + +Si algun cop el superprojecte canvia la URL d'un submòdul, necessitareu executar altre ordre independent: + +```bash +# copy the new URL to your local config +git submodule sync --recursive +# update the submodule from the new URL +git submodule update --init --recursive +``` + +L'opció `--recursive` només serà necessària si qualsevol submòdul te, a la seva vegada, submòduls. + +{% endcapture %} + +{% capture subtree %} + +### Subarbre + +No cal cap ordre especial + +{% endcapture %} + +
+{{ submodule | markdownify }} +
+ +
+{{ subtree | markdownify }} +
+ +
+

Canviant branches

+
+ +{% capture submodule %} + +### Submòdul + +Per defecte, l'arbre de treball d'un submòdul no s'actualitza per coincidir amb el _commit_ registrat al superprojecte quan es canvia de _branch_. Es necessari fer servir l'ordre `git submodule update`, o afegir l'opció `--recurse-submodules` a l'ordre `switch`: + +```bash +git switch +git submodule update --recursive +# or, in one step (Git >= 2.13) +git switch --recurse-submodules +``` + +{% endcapture %} + +{% capture subtree %} + +### Subarbre + +No cal cap ordre especial. + +{% endcapture %} + +
+{{ submodule | markdownify }} +
+ +
+{{ subtree | markdownify }} +
+ +
+

Recuperant actualitzacions al subprojecte

+
+ +{% capture submodule %} + +### Submòdul + +```bash +# Update the submodule repository +git submodule update --remote +# Record the changes in the superproject +git commit -am "Update submodule" +``` + +Si teniu més d'un submòdul, podeu afegir el camí (_path_) al submòdul al final de l'ordre `git submodule update --remote` per indicar que subprojecte cal actualitzar. + +Per defecte, l'ordre `git submodule update --remote` actualitzarà el submòdul al darrer _commit_ de la _branch_ `main` del submòdul remot. + +Podeu canviar la _branch_ per defecte per futures crides amb la seguent ordre: + +```bash +# Git >= 2.22 +git submodule set-branch other-branch +# or +git config -f .gitmodules submodule.example-submodule.branch other-branch +``` + +{% endcapture %} + +{% capture subtree %} + +### Subarbre + +```bash +git subtree pull --prefix=example-submodule https://github.com/githubtraining/example-submodule main --squash +``` + +Podeu escurçar l'ordre afegint la URL del subarbre com un remot: + +```bash +git remote add sub-remote https://github.com/githubtraining/example-submodule.git +``` + +Podeu afegir o recuperar (`add` o `pull`) actualitzacions d'altres referències substituint `main` per la referència desitjada (e.g. `stable`, `v1.0`). + +{% endcapture %} + +
+{{ submodule | markdownify }} +
+ +
+{{ subtree | markdownify }} +
+ +
+

Fent canvis a un subprojecte

+ +A molts casos, es considera una bona pràctica fer els canvis a un clon separat del repositori del subprojecte i obtindre (_pull_) els canvis del projecte pare. Quan això no sigui pràctic, seguiu les seguents pases: +
+ +{% capture submodule %} + +### Submòdul + +Accés al directori del submòdul i creeu una _branch_: + +```bash +cd example-submodule +git switch -c branch-name main +``` + +Els canvis requereixen dos _commits_, un al repositori del subprojecte i altre al respositori pare. +No oblideu enviar les actualitzacions (_push_) tan del submòdul com del superprojecte! + +{% endcapture %} + +{% capture subtree %} + +### Subarbre + +No cal cap ordre especial, els canvis seràn enviats a la _branch_ del projecte pare. + +Es possible crear _commits_ combinant (_barrejant_) canvis del subprojecte i del projecte pare, però generalment està desaconsejat. +{% endcapture %} + +
+{{ submodule | markdownify }} +
+ +
+{{ subtree | markdownify }} +
+ +
+

Enviar canvis al respositori del subprojecte

+
+ +{% capture submodule %} + +### Submòdul + +Mentre al directory del submòdul: + +```bash +git push +``` + +O mentre al directori pare: + +```bash +git push --recurse-submodules=on-demand +``` + +{% endcapture %} + +{% capture subtree %} + +### Subarbre + +```bash + git subtree push --prefix=example-submodule https://github.com/githubtraining/example-submodule main +``` + +{% endcapture %} + +
+{{ submodule | markdownify }} +
+ +
+{{ subtree | markdownify }} +
+ +
+

Configuracions útils per submòduls

+ +{% capture configs %} +Mostrar sempre les traces del submòdul quan es consultin les diferències: + +```bash +git config --global diff.submodule log +``` + +Mostrar un resum curt dels canvis d'un submòdul al missatge de resposta de l'ordre `git status`: + +```bash +git config --global status.submoduleSummary true +``` + +Fer que al executar l'ordre `push`, per defecte tingui l'opció `--recurse-submodules=on-demand`: + +```bash +git config --global push.recurseSubmodules on-demand +``` + +Fer que totes les ordres (menys `clone`), per defecte tinguin l'opció `--recurse-submodules` si donen suport a aquesta opció (això funciona per l'ordre `git pull` des de la versió de Git 2.15): + +```bash +git config --global submodule.recurse true +``` + +{% endcapture %} + +{{ configs | markdownify }} +
diff --git a/downloads/ca/subversion-migration.md b/downloads/ca/subversion-migration.md new file mode 100644 index 000000000..cb1c907a9 --- /dev/null +++ b/downloads/ca/subversion-migration.md @@ -0,0 +1,104 @@ +--- +layout: cheat-sheet +redirect_to: false +title: Migració de Subversion a Git +byline: Quan cal migrar de Subversion a Git, hi ha un vocabulari i conjunt d'ordres que cal apendre, a més de les noves funcionalitats que només Git aporta. Aquest full de referència pretén ajudar-vos en la vostre transició entre la clàssica tecnologia de Subversion i l'ús modern de Git amb la plataforma de col·laboració GitHub. +leadingpath: ../../ +--- + +{% capture migration %} +## Migrant + +### Importador de GitHub + +Pels projectes accesibles des de Internet, GitHub.com proveeix **Importer** per fer una importació automàtica des de un repositori Subversion, Team Foundation Server, Mercurial, o a versions alternatives de Git, a un repositori que es crearà automàticament a GitHub. + +El procés es molt simple, només cal que inicieu la sessió al vostre compte de GitHub, si encara no ho feu, introduïu l'URL de control de versions del vostre projecte existent al camp "repositori" i inicieu la conversió. + +En funció del sistema de control de versions detectat, **Importer** pot sol·licitar informació addicional per a la migració. Això inclou un fitxer on s'informi de l'associació dels noms d'usuari de Subversion a camps Git. + +Llegiu més sobre com importar el vostre projecte a GitHub fent una ullada a [la documentació de Importer de GitHub](https://docs.github.com/get-started/importing-your-projects-to-github/importing-source-code-to-github/importing-a-repository-with-github-importer). + +### Utilitat SVN2Git + +Quan hi han limitacions d'accés o els repositoris de Subversion no son públics i es necessiten migrar a Git, SVN2Git és la utilitat de línia de comandes recomenada i proporciona control a través de cada pas del procés. + +Subversion presenta diferències estructurals amb Git respecte als repositoris, i SVN2Git proporciona la flexibilitat i permet la configuració per serveis Subversion tradicionals i personalitzats. Això garanteix que el dipòsit de Git resultant s'alinei amb les millors pràctiques estàndard per a _commits_, _branches_ i _tags_ per a l'historial complet del projecte. + +Les característiques més remarcables de SVN2Git son: + +- Convertir totes les convencions SVN a l'estructura Git tradicional +- Proporcionar un camp d'usuaris SVN per nomenar i enviar dades de correu electrònic a les confirmacions de Git +- Permet patrons d'exclusió per al continguts concrets del repositori Git + +Podeu trobar més informació sobre SVN2Git a la pàgina d'inici oficial del projecte: + +[https://github.com/nirvdrum/svn2git](https://github.com/nirvdrum/svn2git) +{% endcapture %} + +
+{{ migration | markdownify }} +
+ +{% capture bridging %} +## Fent de pont + +### Aprofitant el suport de Git per a SVN + +Sovint, durant una transició a Git, la infraestructura de Subversion roman al seu lloc mentre els usuaris es familiaritzen interaccionant amb repositoris locals de Git, els fluxos de treball locals i les aplicacions d'escriptori. + +L'ordre `git svn` permet als usuaris sincronitzar-se amb un amfitrió centralitzat del repositori Subversion mentre aprofiten tots els avantatges que ofereixen la línia de comandes de Git i els clients gràfics locals. + +Per importar un repositori Subversion com a un repositori local Git, descarregueu el projecte sencer amb la seguent ordre: + +```bash +git svn clone [svn-repo-url] --stdlayout +``` + +Assegureu-vos d'estar familiaritzats amb l'estructura del repositori Subversion objectiu i si segueix una disposició estàndard o no. Per als dissenys no tradicionals de `trunk`, `branches`, i `tags`, s'han d'especificar les seguents opcions durant l'execució de l'ordre `svn clone`: + +- `T [trunk]` per la font principal convencional alternativa +- `b [branches]` per la ubicació alternativa de les _branches_ +- `t [tags]` per la ubicació alternativa dels _tags_ + +Un cop finalitzada l'operació de clonació, podeu continuar amb l'operativa normal local de Git per la línia de comandes o amb clients gràfics. + +### Sincronitzant amb Subversion + +La publicació de l'historial local de Git en un dipòsit central Subversion importat amb el comand `git svn clone` es realitza amb l'ordre: + +```bash +git svn dcommit +``` + +Si l'historial del dipòsit de Subversion allotjat conté canvis que encara no hi son al dipòsit local de Git, l'operació `dcommit` es rebutjarà fins que es traslladin amb aquesta ordre: + +```bash +git svn rebase +``` + +Tingueu en compte que aquesta acció reescriu l'historial local de Git i els vostres identificadors de _commit_ seran diferents. +{% endcapture %} + +
+{{ bridging | markdownify }} +
+ +## Comprenent + +Subversion i Git comparteixen vocabularis similars, però sovint només són els noms de les ordres. El comportament i la funcionalitat són força diferents donades les qualitats úniques que proporciona Git com a sistema de control de versions distribuït en comparació amb la naturalesa centralitzada de Subversion. + +| SVN command | Git command | Git behavior | +| --- | --- | --- | +| `status` | `status` | Informa sobre l'estat del arbre de teball | +| `add` | `add` | Requerit per cada _path_ abans de ser afegit a un _commit_ | +| `commit` | `commit` | Emmagatzema els canvis agrupats a la història de revisions locals | +| `rm`, `delete` | `rm` | Prepara els _paths_ per ser eliminats per quan es faci el seguent commit | +| `move` | `mv` | Prepara el contingut reubicat per quan es faci el seguent commit | +| `checkout` | `clone` | Adqjuireix l'historial sencer d'un projecte localment per un primer cop | +| | `branch` | Crea un context local context per agrupar _commits_ | +| | `merge` | Fusiona histories de _branches_ i canvis al arbre de treball | +| | `log` | No cal xarxa | +| | `push` | Envia la història de _commits_ a GitHub/un Servei Git central | +| | `pull` | Descarrega i integra l'històric d'un repositori GitHub al repositori local| +| | `fetch` | Descarrega (sense integrar) l'històric d'un repositori GitHub | diff --git a/index.html b/index.html index f8b57bdc4..1327355fd 100644 --- a/index.html +++ b/index.html @@ -25,6 +25,7 @@

Git Cheat Sheets

  • {% octicon download %} Azərbaycanca
  • {% octicon download %} عربى
  • {% octicon download %} বাংলা
  • +
  • {% octicon download %} Català
  • {% octicon download %} Deutsch
  • {% octicon download %} Español (PDF)
  • {% octicon download %} Español