Dimensione: 14288
Commento:
|
← Versione 12 del 17/02/2024 02.58.32 ⇥
Dimensione: 15304
Commento: Revisionati passaggi e aggiornati i messaggi in output
|
Le cancellazioni sono segnalate in questo modo. | Le aggiunte sono segnalate in questo modo. |
Linea 3: | Linea 3: |
<<Informazioni(forum="http://forum.ubuntu-it.org/viewtopic.php?f=46&t=590616"; rilasci="14.04")>> | <<Informazioni(forum="http://forum.ubuntu-it.org/viewtopic.php?f=46&t=590616"; rilasci="22.04")>> |
Linea 29: | Linea 29: |
* f61b2e2 (HEAD, origin/master, origin/HEAD, master) - user : Merge branch 'gp-1' (4 minutes ago) |\ | * d8b610a (origin/gp-1) - user : Modificato codice per issue gp-1. (11 minutes ago) * | e4064d8 - user : Aggiunta cartella documentazione. (6 minutes ago) |/ * 1412239 - user : Aggiunta data in stampa. (15 minutes ago) * e1e5a46 - user : Aggiunti sorgenti e Makefile (18 minutes ago) * e9ea39b - user : README aggiunto (25 minutes ago) |
* b92d7ff (HEAD -> master, origin/master, origin/HEAD) - Mario Rossi : Merge branch 'gp-1' (18 minuti fa) |\ | * 05b43f8 (origin/gp-1) - Mario Rossi : Modificato codice per issue gp-1. (29 minuti fa) * | 158633d - Mario Rossi : Aggiunta cartella documentazione. (22 minuti fa) |/ * 5b235ad - Mario Rossi : Aggiunta data in stampa. (52 minuti fa) * b7c1ae2 - Mario Rossi : Aggiunti sorgenti e Makefile (59 minuti fa) * ba12845 - Mario Rossi : README aggiunto (85 minuti fa) |
Linea 48: | Linea 48: |
||<tablestyle="text-align: justify; width:100%;" style="border:none;" 5%><<Immagine(Icone/Piccole/note.png,,center)>> ||<style="padding:0.5em; border:none;">'''''Git''' puo avere più repository remoti associati al repository locale. Questo permette molta flessibilità, ma al momento verrà ignorato questo aspetto.'' || | {{{#!wiki note '''Git''' puo avere più repository remoti associati al repository locale. Questo permette molta flessibilità, ma al momento verrà ignorato questo aspetto. }}} |
Linea 82: | Linea 84: |
drwxrwxr-x 22 user group 4096 Dec 4 15:06 .. drwxrwxr-x 3 user group 4096 Dec 4 15:06 . drwxrwxr-x 7 user group 4096 Dec 4 15:07 .git |
totale 12 drwxrwxr-x 3 mario mario 4096 feb 17 02:28 . drwxrwxr-x 7 mario mario 4096 feb 17 02:28 .git drwxr-x--- 29 mario mario 4096 feb 17 02:29 .. |
Linea 96: | Linea 99: |
remote: Counting objects: 23, done. remote: Compressing objects: 100% (15/15), done. remote: Total 23 (delta 6), reused 0 (delta 0) Unpacking objects: 100% (23/23), done. From /home/user/gitproject * [new branch] gp-1 -> origin/gp-1 * [new branch] master -> origin/master |
remote: Enumerazione degli oggetti in corso: 23, fatto. remote: Conteggio degli oggetti in corso: 100% (23/23), fatto. remote: Compressione oggetti in corso: 100% (15/15), fatto. remote: 23 oggetti totali (7 delta), 0 riutilizzati (0 delta), 0 riutilizzati nel file pack Decompressione degli oggetti in corso: 100% (23/23), 1.91 KiB | 325.00 KiB/s, fatto. Da /home/mario/gitproject * [nuovo branch] gp-1 -> origin/gp-1 * [nuovo branch] master -> origin/master |
Linea 107: | Linea 111: |
drwxrwxr-x 22 user group 4096 Dec 4 15:06 .. drwxrwxr-x 3 user group 4096 Dec 4 15:06 . drwxrwxr-x 7 user group 4096 Dec 4 15:09 .git }}}ci conferma che nonostante siano state scaricate le modifiche remote, la cartella risulta essere ancora vuota. Questo perchè le modifiche scaricate sono interne alla directory `.git` ma non è ancora stata eseguita la sincronizzazione il tutto. |
totale 12 drwxrwxr-x 3 mario mario 4096 feb 17 02:28 . drwxr-x--- 29 mario mario 4096 feb 17 02:29 .. drwxrwxr-x 8 mario mario 4096 feb 17 02:32 .git }}}ci conferma che nonostante siano state scaricate le modifiche remote, la cartella risulta essere ancora vuota. Questo perchè le modifiche scaricate sono interne alla directory `.git` ma non è ancora stata eseguita la sincronizzazione del tutto. |
Linea 114: | Linea 119: |
* f61b2e2 (origin/master) - user : Merge branch 'gp-1' (10 minutes ago) |\ | * d8b610a (origin/gp-1) - user : Modificato codice per issue gp-1. (17 minutes ago) * | e4064d8 - user : Aggiunta cartella documentazione. (12 minutes ago) |/ * 1412239 - user : Aggiunta data in stampa. (21 minutes ago) * e1e5a46 - user : Aggiunti sorgenti e Makefile (23 minutes ago) * e9ea39b - user : README aggiunto (31 minutes ago) |
* b92d7ff (origin/master) - Mario Rossi : Merge branch 'gp-1' (31 minuti fa) |\ | * 05b43f8 (origin/gp-1) - Mario Rossi : Modificato codice per issue gp-1. (42 minuti fa) * | 158633d - Mario Rossi : Aggiunta cartella documentazione. (35 minuti fa) |/ * 5b235ad - Mario Rossi : Aggiunta data in stampa. (65 minuti fa) * b7c1ae2 - Mario Rossi : Aggiunti sorgenti e Makefile (71 minuti fa) * ba12845 - Mario Rossi : README aggiunto (2 ore fa) |
Linea 129: | Linea 134: |
* f61b2e2 (HEAD, origin/master, master) - user : Merge branch 'gp-1' (11 minutes ago) |\ | * d8b610a (origin/gp-1) - user : Modificato codice per issue gp-1. (18 minutes ago) * | e4064d8 - user : Aggiunta cartella documentazione. (13 minutes ago) |/ * 1412239 - user : Aggiunta data in stampa. (22 minutes ago) * e1e5a46 - user : Aggiunti sorgenti e Makefile (24 minutes ago) * e9ea39b - user : README aggiunto (32 minutes ago) |
* b92d7ff (HEAD -> master, origin/master) - Mario Rossi : Merge branch 'gp-1' (32 minuti fa) |\ | * 05b43f8 (origin/gp-1) - Mario Rossi : Modificato codice per issue gp-1. (44 minuti fa) * | 158633d - Mario Rossi : Aggiunta cartella documentazione. (36 minuti fa) |/ * 5b235ad - Mario Rossi : Aggiunta data in stampa. (66 minuti fa) * b7c1ae2 - Mario Rossi : Aggiunti sorgenti e Makefile (73 minuti fa) * ba12845 - Mario Rossi : README aggiunto (2 ore fa) |
Linea 140: | Linea 145: |
total 32 drwxrwxr-x 22 user group 4096 Dec 4 15:06 .. drwxrwxr-x 2 user group 4096 Dec 4 15:11 src -rw-rw-r-- 1 user group 16 Dec 4 15:11 README -rw-rw-r-- 1 user group 258 Dec 4 15:11 Makefile -rw-rw-r-- 1 user group 10 Dec 4 15:11 .gitignore drwxrwxr-x 8 user group 4096 Dec 4 15:11 .git drwxrwxr-x 2 user group 4096 Dec 4 15:11 doc drwxrwxr-x 5 user group 4096 Dec 4 15:11 . |
totale 32 drwxrwxr-x 2 mario mario 4096 feb 17 02:36 src -rw-rw-r-- 1 mario mario 16 feb 17 02:36 README -rw-rw-r-- 1 mario mario 258 feb 17 02:36 Makefile -rw-rw-r-- 1 mario mario 10 feb 17 02:36 .gitignore drwxrwxr-x 8 mario mario 4096 feb 17 02:36 .git drwxrwxr-x 2 mario mario 4096 feb 17 02:36 doc drwxrwxr-x 5 mario mario 4096 feb 17 02:36 . drwxr-x--- 29 mario mario 4096 feb 17 02:36 .. |
Linea 168: | Linea 173: |
remote: Counting objects: 23, done. remote: Compressing objects: 100% (15/15), done. remote: Total 23 (delta 6), reused 0 (delta 0) Unpacking objects: 100% (23/23), done. From /home/user/gitproject |
remote: Enumerazione degli oggetti in corso: 23, fatto. remote: Conteggio degli oggetti in corso: 100% (23/23), fatto. remote: Compressione oggetti in corso: 100% (15/15), fatto. remote: 23 oggetti totali (7 delta), 0 riutilizzati (0 delta), 0 riutilizzati nel file pack Decompressione degli oggetti in corso: 100% (23/23), 1.91 KiB | 325.00 KiB/s, fatto. Da /home/mario/gitproject |
Linea 174: | Linea 180: |
* [nuovo branch] master -> origin/master | |
Linea 178: | Linea 185: |
* f61b2e2 (HEAD, origin/master, master) - user : Merge branch 'gp-1' (15 minutes ago) |\ | * d8b610a - user : Modificato codice per issue gp-1. (22 minutes ago) * | e4064d8 - user : Aggiunta cartella documentazione. (17 minutes ago) |/ * 1412239 - user : Aggiunta data in stampa. (26 minutes ago) * e1e5a46 - user : Aggiunti sorgenti e Makefile (28 minutes ago) * e9ea39b - user : README aggiunto (36 minutes ago) |
* b92d7ff (HEAD -> master, origin/master) - Mario Rossi : Merge branch 'gp-1' (38 minuti fa) |\ | * 05b43f8 - Mario Rossi : Modificato codice per issue gp-1. (49 minuti fa) * | 158633d - Mario Rossi : Aggiunta cartella documentazione. (42 minuti fa) |/ * 5b235ad - Mario Rossi : Aggiunta data in stampa. (72 minuti fa) * b7c1ae2 - Mario Rossi : Aggiunti sorgenti e Makefile (79 minuti fa) * ba12845 - Mario Rossi : README aggiunto (2 ore fa) |
Linea 202: | Linea 209: |
std::cout << "Thu Dec 4 14:48:20 CET 2014: Benvenuti su Git!" << std::endl; std::cout << "Issue gp-1 implementata" << std::endl; std::cout << "Modifica da un altro repository" << std::endl; return 0; |
std::cout << "sab 17 feb 2024, 01:26:54, CET: Benvenuti su Git!" << std::endl; std::cout << "Issue gp-1 implementata" << std::endl; std::cout << "Modifica da un altro repository" << std::endl; return 0; |
Linea 214: | Linea 221: |
* 0ed9a58 (HEAD, master) - user : Aggiunta riga di output. (15 seconds ago) * f61b2e2 (origin/master) - user : Merge branch 'gp-1' (23 minutes ago) |\ | * d8b610a (origin/gp-1) - user : Modificato codice per issue gp-1. (30 minutes ago) * | e4064d8 - user : Aggiunta cartella documentazione. (26 minutes ago) |/ * 1412239 - user : Aggiunta data in stampa. (34 minutes ago) * e1e5a46 - user : Aggiunti sorgenti e Makefile (37 minutes ago) * e9ea39b - user : README aggiunto (44 minutes ago) }}}È stato creato un nuovo commit, e dal log possiamo vedere che i due branch master, quello locale e quello remoto, non sono più (ovviamente) allineati. |
* c1648d4 (HEAD -> master) - Mario Rossi : Aggiunta riga di output. (11 secondi fa) * b92d7ff (origin/master) - Mario Rossi : Merge branch 'gp-1' (41 minuti fa) |\ | * 05b43f8 - Mario Rossi : Modificato codice per issue gp-1. (52 minuti fa) * | 158633d - Mario Rossi : Aggiunta cartella documentazione. (45 minuti fa) |/ * 5b235ad - Mario Rossi : Aggiunta data in stampa. (75 minuti fa) * b7c1ae2 - Mario Rossi : Aggiunti sorgenti e Makefile (82 minuti fa) * ba12845 - Mario Rossi : README aggiunto (2 ore fa) }}}È stato creato un nuovo commit e dal log possiamo vedere che i due branch master, quello locale e quello remoto, non sono più (ovviamente) allineati. |
Linea 232: | Linea 239: |
Counting objects: 7, done. Delta compression using up to 8 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (4/4), 395 bytes, done. Total 4 (delta 2), reused 0 (delta 0) Unpacking objects: 100% (4/4), done. |
Enumerazione degli oggetti in corso: 7, fatto. Conteggio degli oggetti in corso: 100% (7/7), fatto. Compressione delta in corso, uso fino a 8 thread Compressione oggetti in corso: 100% (3/3), fatto. Scrittura degli oggetti in corso: 100% (4/4), 395 byte | 395.00 KiB/s, fatto. 4 oggetti totali (2 delta), 0 riutilizzati (0 delta), 0 riutilizzati nel file pack |
Linea 242: | Linea 249: |
remote: error: By default, updating the current branch in a non-bare repository remote: error: is denied, because it will make the index and work tree inconsistent remote: error: with what you pushed, and will require 'git reset --hard' to match remote: error: the work tree to HEAD. remote: error: remote: error: You can set 'receive.denyCurrentBranch' configuration variable to remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into remote: error: its current branch; however, this is not recommended unless you remote: error: arranged to update its work tree to match what you pushed in some remote: error: other way. remote: error: remote: error: To squelch this message and still keep the default behaviour, set remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'. To ../gitproject/ |
remote: error: Per impostazione predefinita, l'aggiornamento del branch corrente remote: in un repository non spoglio è negato, perché renderebbe l'indice remote: e l'albero di lavoro inconsistenti con i dati di cui si è eseguito remote: il push e richiederebbe 'git reset --hard' per ripristinare la remote: corrispondenza dell'albero di lavoro con HEAD. remote: remote: Puoi impostare la variabile di configurazione remote: 'receive.denyCurrentBranch' a 'ignore' o 'warn' nel repository remote: remoto per consentire il push nel branch corrente; ciò nonostante, remote: questo non è raccomandato a meno che tu non provveda ad aggiornare remote: il suo albero di lavoro in modo che corrisponda a ciò di cui hai remote: eseguito il push in qualche altro modo. remote: remote: Per non visualizzare più questo messaggio e mantenere comunque remote: il comportamento predefinito, imposta la variabile di remote: configurazione 'receive.denyCurrentBranch' a 'refuse'. To /home/mario/gitproject |
Linea 257: | Linea 267: |
error: failed to push some refs to '/home/user/gitproject' | error: push di alcuni riferimenti su '/home/mario/gitproject' non riuscito |
Linea 280: | Linea 291: |
remote: Counting objects: 7, done. remote: Compressing objects: 100% (3/3), done. remote: Total 4 (delta 2), reused 0 (delta 0) Unpacking objects: 100% (4/4), done. From /home/user/gitproject |
remote: Enumerazione degli oggetti in corso: 7, fatto. remote: Conteggio degli oggetti in corso: 100% (7/7), fatto. remote: Compressione oggetti in corso: 100% (3/3), fatto. remote: 4 oggetti totali (2 delta), 0 riutilizzati (0 delta), 0 riutilizzati nel file pack Decompressione degli oggetti in corso: 100% (4/4), 375 byte | 375.00 KiB/s, fatto. Da /home/mario/gitproject |
Linea 286: | Linea 298: |
Updating f61b2e2..0ed9a58 | b92d7ff..c1648d4 master -> origin/master Aggiornamento di b92d7ff..c1648d4 |
Linea 288: | Linea 301: |
src/main.cpp | 1 + | src/main.cpp | 1 + |
Linea 294: | Linea 307: |
* 0ed9a58 (HEAD, origin/master, master) - user : Aggiunta riga di output. (4 minutes ago) * f61b2e2 - user : Merge branch 'gp-1' (27 minutes ago) |\ | * d8b610a (origin/gp-1) - user : Modificato codice per issue gp-1. (34 minutes ago) * | e4064d8 - user : Aggiunta cartella documentazione. (30 minutes ago) |/ * 1412239 - user : Aggiunta data in stampa. (38 minutes ago) * e1e5a46 - user : Aggiunti sorgenti e Makefile (41 minutes ago) * e9ea39b - user : README aggiunto (48 minutes ago) |
* c1648d4 (HEAD -> master, origin/master) - Mario Rossi : Aggiunta riga di output. (9 minuti fa) * b92d7ff - Mario Rossi : Merge branch 'gp-1' (50 minuti fa) |\ | * 05b43f8 (origin/gp-1) - Mario Rossi : Modificato codice per issue gp-1. (61 minuti fa) * | 158633d - Mario Rossi : Aggiunta cartella documentazione. (54 minuti fa) |/ * 5b235ad - Mario Rossi : Aggiunta data in stampa. (84 minuti fa) * b7c1ae2 - Mario Rossi : Aggiunti sorgenti e Makefile (2 ore fa) * ba12845 - Mario Rossi : README aggiunto (2 ore fa) |
Guida verificata con Ubuntu: 22.04
Problemi in questa pagina? Segnalali in questa discussione
Introduzione
In questa pagina vengono mostrati gli strumenti di Git che rendono possibile il lavoro di più persone ad un progetto. Per fare questo verrà simulata in locale una situazione analoga a quella in cui si utilizzi un repository remoto.
Per poter seguire la seguente guida si presuppone:
di aver creato il progetto gitproject come indicato;
di aver elaborato il progetto come mostrato nelle pagine sul Commit e sul Branching.
Verranno create nuovi repository (gitproject_2, gitproject_3, ecc..) che simuleranno repositori locali, mentre gitproject simulerà il repository remoto. Saranno quindi passati in rassegna i metodi di sincronizzazione.
Clonazione repository
In questo esempio verrà creato il progetto locale gitproject_2 sul quale verrà clonato il repository "remoto" gitproject.
Creare una nuova cartella in cui vogliamo creare il nuovo repository e spostarsi all'interno:
mkdir ~/gitproject_2 cd ~/gitproject_2
Clonare il repository gitproject nella cartella corrente ".":
git clone ~/gitproject .
Il comando sarebbe stato del tutto analogo anche se gitproject si fosse trovato su di un server esterno al proprio pc.
Consultare il log:
git lg
che restituirà:
* b92d7ff (HEAD -> master, origin/master, origin/HEAD) - Mario Rossi : Merge branch 'gp-1' (18 minuti fa) |\ | * 05b43f8 (origin/gp-1) - Mario Rossi : Modificato codice per issue gp-1. (29 minuti fa) * | 158633d - Mario Rossi : Aggiunta cartella documentazione. (22 minuti fa) |/ * 5b235ad - Mario Rossi : Aggiunta data in stampa. (52 minuti fa) * b7c1ae2 - Mario Rossi : Aggiunti sorgenti e Makefile (59 minuti fa) * ba12845 - Mario Rossi : README aggiunto (85 minuti fa)
Il log è quasi uguale a quello originale. Si nota la presenza di altri branch:
origin/master
origin/HEAD
origin/gp-1
Questi sono i branch del repository remoto, che sono materialmente quelli creati nel repository originale. origin è il nome di default che Git da a un repository remoto,.
Attraverso il comando remote elencare i repository remoti:
git remote
che restituirà:
origin
Allo stato attuale ne risulta uno solo, quello clonato.
Git puo avere più repository remoti associati al repository locale. Questo permette molta flessibilità, ma al momento verrà ignorato questo aspetto.
Attraverso il comando branch elencare i branch:
git branch
che risulterà:
* master
solamente un branch locale, master, sincronizzato con il master remoto (più precisamente nel punto in cui punta HEAD remoto).
Sincronizzazione manuale
In questo esempio verrà creato il progetto "locale" gitproject_3 nel quale verrà inizializzato il repository e in un secondo momento sarà sincronizzato manualmente con il repository "remoto" gitproject.
Creare una nuova cartella in cui vogliamo creare il nuovo repository e spostarsi all'interno:
mkdir ~/gitproject_3 cd ~/gitproject_3
Inizializzare il repository:
git init
Tramite il comando remote add aggiungere il repository remoto:
git remote add origin ~/gitproject
Attraverso il comando remote elencare i repository remoti:
git remote
che restituirà:
origin
Consultare il log:
git lg
il cui output sarà
fatal: bad default revision 'HEAD'
Il repository è vuoto! Questo perché è stato aggiunto il repository remoto, ma non è ancora stata fatta la sincronizzazione. Il comando:
ls -altr
mostra la seguente situazione dei file nella cartella:
totale 12 drwxrwxr-x 3 mario mario 4096 feb 17 02:28 . drwxrwxr-x 7 mario mario 4096 feb 17 02:28 .git drwxr-x--- 29 mario mario 4096 feb 17 02:29 ..
Per poter sincronizzare il repository locale con quello remoto, occorre scaricare le modifiche. Questo viene fatto in due modi.
Primo metodo - Fetch + Merge
Si vuole prendere il contenuto del repository remoto e sincronizzare quello locale, in maniera da poter prendere le modifiche remote. Il comando fetch permette di scaricare in locale le modifiche remote, ma NON di applicarle.
Scaricare localmente le modifiche remote:
git fetch origin
Il comando restituirà:
remote: Enumerazione degli oggetti in corso: 23, fatto. remote: Conteggio degli oggetti in corso: 100% (23/23), fatto. remote: Compressione oggetti in corso: 100% (15/15), fatto. remote: 23 oggetti totali (7 delta), 0 riutilizzati (0 delta), 0 riutilizzati nel file pack Decompressione degli oggetti in corso: 100% (23/23), 1.91 KiB | 325.00 KiB/s, fatto. Da /home/mario/gitproject * [nuovo branch] gp-1 -> origin/gp-1 * [nuovo branch] master -> origin/master
Il controllo dei file:
ls -altr
il cui output sarà:
totale 12 drwxrwxr-x 3 mario mario 4096 feb 17 02:28 . drwxr-x--- 29 mario mario 4096 feb 17 02:29 .. drwxrwxr-x 8 mario mario 4096 feb 17 02:32 .git
ci conferma che nonostante siano state scaricate le modifiche remote, la cartella risulta essere ancora vuota. Questo perchè le modifiche scaricate sono interne alla directory .git ma non è ancora stata eseguita la sincronizzazione del tutto.
Consultare il log:
git lg
il cui output è:
* b92d7ff (origin/master) - Mario Rossi : Merge branch 'gp-1' (31 minuti fa) |\ | * 05b43f8 (origin/gp-1) - Mario Rossi : Modificato codice per issue gp-1. (42 minuti fa) * | 158633d - Mario Rossi : Aggiunta cartella documentazione. (35 minuti fa) |/ * 5b235ad - Mario Rossi : Aggiunta data in stampa. (65 minuti fa) * b7c1ae2 - Mario Rossi : Aggiunti sorgenti e Makefile (71 minuti fa) * ba12845 - Mario Rossi : README aggiunto (2 ore fa)
Ci sono i repository remoti, ma non quello locale su cui ci troviamo. E dato che in quello locale non è stato ancora fatto niente, la nostra directory e' vuota.Effetuare il merge del branch locale con quello remoto:
git merge origin/master
Ricontrollare il log:
git lg
il cui output ora sarà:
* b92d7ff (HEAD -> master, origin/master) - Mario Rossi : Merge branch 'gp-1' (32 minuti fa) |\ | * 05b43f8 (origin/gp-1) - Mario Rossi : Modificato codice per issue gp-1. (44 minuti fa) * | 158633d - Mario Rossi : Aggiunta cartella documentazione. (36 minuti fa) |/ * 5b235ad - Mario Rossi : Aggiunta data in stampa. (66 minuti fa) * b7c1ae2 - Mario Rossi : Aggiunti sorgenti e Makefile (73 minuti fa) * ba12845 - Mario Rossi : README aggiunto (2 ore fa)
Adesso i due branch sono allineati (puntano allo stesso commit). Se vediamo il contenuto della cartella:
ls -altr
possiamo vedere che e' aggiornato:
totale 32 drwxrwxr-x 2 mario mario 4096 feb 17 02:36 src -rw-rw-r-- 1 mario mario 16 feb 17 02:36 README -rw-rw-r-- 1 mario mario 258 feb 17 02:36 Makefile -rw-rw-r-- 1 mario mario 10 feb 17 02:36 .gitignore drwxrwxr-x 8 mario mario 4096 feb 17 02:36 .git drwxrwxr-x 2 mario mario 4096 feb 17 02:36 doc drwxrwxr-x 5 mario mario 4096 feb 17 02:36 . drwxr-x--- 29 mario mario 4096 feb 17 02:36 ..
Secondo metodo - Pull
Più rapido risulta l'utilizzo del comando pull che racchiude in se il fetch e il merge ed è il comando solitamente utilizzato in questi casi. Verrà creato un nuovo repository gitproject_4 che funga da progetto locale.
Creare una nuova cartella per ospitare il repository gitproject_4 e spostarsi all'interno:
mkdir ~/gitproject_4 cd ~/gitproject_4
Inizializzare il repository:
git init
Aggiungere il repository remoto:
git remote add origin ~/gitproject
Quindi eseguire il pull:
git pull origin master
che restituirà il seguente output:
remote: Enumerazione degli oggetti in corso: 23, fatto. remote: Conteggio degli oggetti in corso: 100% (23/23), fatto. remote: Compressione oggetti in corso: 100% (15/15), fatto. remote: 23 oggetti totali (7 delta), 0 riutilizzati (0 delta), 0 riutilizzati nel file pack Decompressione degli oggetti in corso: 100% (23/23), 1.91 KiB | 325.00 KiB/s, fatto. Da /home/mario/gitproject * branch master -> FETCH_HEAD * [nuovo branch] master -> origin/master
Verificare il log:
git lg
che risulta essere:
* b92d7ff (HEAD -> master, origin/master) - Mario Rossi : Merge branch 'gp-1' (38 minuti fa) |\ | * 05b43f8 - Mario Rossi : Modificato codice per issue gp-1. (49 minuti fa) * | 158633d - Mario Rossi : Aggiunta cartella documentazione. (42 minuti fa) |/ * 5b235ad - Mario Rossi : Aggiunta data in stampa. (72 minuti fa) * b7c1ae2 - Mario Rossi : Aggiunti sorgenti e Makefile (79 minuti fa) * ba12845 - Mario Rossi : README aggiunto (2 ore fa)
È stato quindi creato un repository e sincronizzato il suo contenuto con un repository remoto.
Pubblicazione modifiche locali
Verranno qui effettuate delle modifiche nel repository locale gitproject_4.
Modificare il file ~/gitproject_4/src/main.cpp, digitando:
sed -i '4 a \\tstd::cout << "Modifica da un altro repository" << std::endl;' src/main.cpp
Verificare il contenuto del file:
cat src/main.cpp
che risulterà essere:
#include <iostream> int main() { std::cout << "sab 17 feb 2024, 01:26:54, CET: Benvenuti su Git!" << std::endl; std::cout << "Issue gp-1 implementata" << std::endl; std::cout << "Modifica da un altro repository" << std::endl; return 0; }
Applicare la modifica effettuando il commit:
git commit -a -m "Aggiunta riga di output."
Consultare il log:
git lg
il cui output ora sarà:
* c1648d4 (HEAD -> master) - Mario Rossi : Aggiunta riga di output. (11 secondi fa) * b92d7ff (origin/master) - Mario Rossi : Merge branch 'gp-1' (41 minuti fa) |\ | * 05b43f8 - Mario Rossi : Modificato codice per issue gp-1. (52 minuti fa) * | 158633d - Mario Rossi : Aggiunta cartella documentazione. (45 minuti fa) |/ * 5b235ad - Mario Rossi : Aggiunta data in stampa. (75 minuti fa) * b7c1ae2 - Mario Rossi : Aggiunti sorgenti e Makefile (82 minuti fa) * ba12845 - Mario Rossi : README aggiunto (2 ore fa)
È stato creato un nuovo commit e dal log possiamo vedere che i due branch master, quello locale e quello remoto, non sono più (ovviamente) allineati.
Push
Per inviare le modifiche al repository remoto occorre utilizzare il comando push, specificando sempre il repository remoto e i branch da voler sincronizzare. In questo modo verranno mandate le modifiche nel repository in modo tale che gli altri utenti, una volta sincronizzati con quello remoto, possano percepire le modifiche avvenute.
Effettuare il push:
git push origin master
questo sarà l'output visualizzato:
Enumerazione degli oggetti in corso: 7, fatto. Conteggio degli oggetti in corso: 100% (7/7), fatto. Compressione delta in corso, uso fino a 8 thread Compressione oggetti in corso: 100% (3/3), fatto. Scrittura degli oggetti in corso: 100% (4/4), 395 byte | 395.00 KiB/s, fatto. 4 oggetti totali (2 delta), 0 riutilizzati (0 delta), 0 riutilizzati nel file pack To /home/user/gitproject f61b2e2..0ed9a58 master -> master
Tuttavia si potrebbero visualizzare i seguenti messaggi di errore:
remote: error: refusing to update checked out branch: refs/heads/master remote: error: Per impostazione predefinita, l'aggiornamento del branch corrente remote: in un repository non spoglio è negato, perché renderebbe l'indice remote: e l'albero di lavoro inconsistenti con i dati di cui si è eseguito remote: il push e richiederebbe 'git reset --hard' per ripristinare la remote: corrispondenza dell'albero di lavoro con HEAD. remote: remote: Puoi impostare la variabile di configurazione remote: 'receive.denyCurrentBranch' a 'ignore' o 'warn' nel repository remote: remoto per consentire il push nel branch corrente; ciò nonostante, remote: questo non è raccomandato a meno che tu non provveda ad aggiornare remote: il suo albero di lavoro in modo che corrisponda a ciò di cui hai remote: eseguito il push in qualche altro modo. remote: remote: Per non visualizzare più questo messaggio e mantenere comunque remote: il comportamento predefinito, imposta la variabile di remote: configurazione 'receive.denyCurrentBranch' a 'refuse'. To /home/mario/gitproject ! [remote rejected] master -> master (branch is currently checked out) error: push di alcuni riferimenti su '/home/mario/gitproject' non riuscito
Questo perche' il nostro repository remoto non e' di tipo bare. Al momento verrà ignorato questo avviso.
Per poter ovviare al problema digitare il seguente comando:
git config --global receive.denyCurrentBranch ignore
Effettuare nuovamente il push:
git push origin master
Quando non è piu' necessario settare lo stesso valore a refuse:
git config --global receive.denyCurrentBranch refuse
per ripristinare lo stato originale.
Verifica
Verificare che tutto sia avvenuto nel modo corretto utilizzando un repository creato in precedenza.
Spostarsi nella directory del repository gitproject_3:
cd ~/gitproject_3
Effettuare il pull per risincronizzarsi col server remoto, sul quale sono state apportate le modifche sviluppate sul gitproject_4:
git pull origin master
Verrà visualizzato il seguente output:
remote: Enumerazione degli oggetti in corso: 7, fatto. remote: Conteggio degli oggetti in corso: 100% (7/7), fatto. remote: Compressione oggetti in corso: 100% (3/3), fatto. remote: 4 oggetti totali (2 delta), 0 riutilizzati (0 delta), 0 riutilizzati nel file pack Decompressione degli oggetti in corso: 100% (4/4), 375 byte | 375.00 KiB/s, fatto. Da /home/mario/gitproject * branch master -> FETCH_HEAD b92d7ff..c1648d4 master -> origin/master Aggiornamento di b92d7ff..c1648d4 Fast-forward src/main.cpp | 1 + 1 file changed, 1 insertion(+)
Controllare il log:
git lg
che risulta essere:
* c1648d4 (HEAD -> master, origin/master) - Mario Rossi : Aggiunta riga di output. (9 minuti fa) * b92d7ff - Mario Rossi : Merge branch 'gp-1' (50 minuti fa) |\ | * 05b43f8 (origin/gp-1) - Mario Rossi : Modificato codice per issue gp-1. (61 minuti fa) * | 158633d - Mario Rossi : Aggiunta cartella documentazione. (54 minuti fa) |/ * 5b235ad - Mario Rossi : Aggiunta data in stampa. (84 minuti fa) * b7c1ae2 - Mario Rossi : Aggiunti sorgenti e Makefile (2 ore fa) * ba12845 - Mario Rossi : README aggiunto (2 ore fa)
I repository risultano allineati.