User Tools

Site Tools


doc:appunti:prog:git

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
doc:appunti:prog:git [2022/01/09 11:57] – [Branches] niccolodoc:appunti:prog:git [2022/01/10 09:57] – [Revert di un singolo file] niccolo
Line 57: Line 57:
 git remote set-url origin git@github.com:RigacciOrg/ProTherm.git git remote set-url origin git@github.com:RigacciOrg/ProTherm.git
 </code> </code>
 +
 ==== git clone ==== ==== git clone ====
  
Line 122: Line 123:
  
 Dalla propria home page, cliccare sul fork. Controllare che il titolo della pagina sia **%%<username>/<projectname>%%**. Quindi cliccare sul tab **Settings** e quindi in fondo alla pagina **Delete this repository**. Dalla propria home page, cliccare sul fork. Controllare che il titolo della pagina sia **%%<username>/<projectname>%%**. Quindi cliccare sul tab **Settings** e quindi in fondo alla pagina **Delete this repository**.
-===== Misc Commands ===== 
  
-==== Revert di un singolo file ====+===== Gestione dei tag ===== 
 + 
 +Uno dei motivi più comuni per cui creare un **tag** è dare un nome e un numero di versione di una particolare versione del progetto. Quello che viene maracto con un tag diventa **immutabile** e non potrà essere cambiato in futuro. Per contro i **branch** servono a identificare rami diversi dello sviluppo che subiranno eventuali cambiamenti. 
 + 
 +Ad esempio per marcare la versione corrente con il nome **print3d-1.0** si esegue:
  
 <code> <code>
-git log path/to/file +git tag -a print3d-1.0
-git checkout <commit> path/to/file+
 </code> </code>
  
-==== Colors ====+se invece della versione corrente si vuole etichettare un commit precedente, bisogna individuare l'hash ed eseguire il comando (notare che l'hash è indicato in forma abbreviata):
  
-Disable GUI colors:+<code> 
 +git log --pretty=oneline 
 +... 
 +d7dd3e5c44023bfefc6a6c649506e3e029929b4c Added a 3D printable OpenSCAD model. 
 +... 
 +git tag -a print3d-1.0 d7dd3e5 
 +</code> 
 + 
 +Infine bisogna salvare sul repository remoto (origin) il nuovo tag:
  
 <code> <code>
-git config --global color.ui false+git push origin print3d-1.0
 </code> </code>
  
-==== Branches ====+Se si desidera rimuovere un tag dal repository remoto: 
 + 
 +<code> 
 +git push --delete origin print3d-1.0 
 +</code> 
 + 
 +===== Gestionde dei branch =====
  
 Mostra i rami di sviluppo, locali e remoti: Mostra i rami di sviluppo, locali e remoti:
Line 152: Line 169:
 ''remotes/origin/HEAD'' is the default branch for the remote named origin. This lets you simply say ''origin'' instead of ''origin/master''. ''remotes/origin/HEAD'' is the default branch for the remote named origin. This lets you simply say ''origin'' instead of ''origin/master''.
  
-Per creare localmente un nuovo branch (nell'esempio viene assegnato il nome **jessie**) e verificare che sia stato creato:+==== Creazione di un nuovo branch ==== 
 + 
 +Per creare localmente un nuovo branch di nome **jessie**:
  
 <code> <code>
 git branch jessie git branch jessie
-git branch -a 
 </code> </code>
  
-questo è l'output:+Si può verificare che sia stato creato:
  
 <code> <code>
 +git branch -a
   jessie   jessie
 * master * master
Line 167: Line 186:
   remotes/origin/master   remotes/origin/master
 </code> </code>
 +
 +Si vede che localmente esistono i due branch **jessie** e **master**; il secondo è marcato con un asterisco ed è quindi quello utilizzato per effettuare i commit locali. Quindi aver creato un branch nuovo non significa automaticamente lavorarci sopra.
 +
 +==== Selezionare il branch di lavoro locale ====
 +
 +Per iniziare a lavorare localmente su un determinato branch si usa il comando **git switch**:
 +
 +<code>
 +git switch jessie
 +</code>
 +
 +Si verifica che il branch locale predefinito (marcato con un asterisco) sia effettivamente cambiato:
 +
 +<code>
 +git branch -a
 +* jessie
 +  master
 +  remotes/origin/HEAD -> origin/master
 +  remotes/origin/jessie
 +  remotes/origin/master
 +</code>
 +
 +In ogni momento è possibile cambiare branch di lavoro locale, ad esempio tornando su master:
 +
 +<code>
 +git switch master
 +</code>
 +
 +**ATTENZIONE** Prima di Git 2.23 si utilizzava il comando **git checkout** per cambiare branch di lavoro locale.
 +
 +==== Propagare un branch locale anche in remoto ====
  
 Per propagare il nuovo branch anche sul repository remoto: Per propagare il nuovo branch anche sul repository remoto:
Line 174: Line 224:
 </code> </code>
  
-Con il comando **git branch -a** è possibile verificare che localmente si sta lavorando sul branch **jessie** e che sul repository remoto esistono i branch **master** e **jessie**:+È possibile verificare che localmente si sta lavorando ancora sul branch **master** e che sul repository remoto esistono i branch **master** e **jessie**:
  
 <code> <code>
 +git branch -a
   jessie   jessie
 * master * master
Line 184: Line 235:
 </code> </code>
  
-Sul repository remoto il branch predefinito (''HEAD''cioè il commit più recente che vediamo) punta su ''origin/master'', non sul nuovo branch ''jessie''.+Avendo fatto lo switch (o il checkout) ad uno specifico branch, gli eventuali commit andranno su di esso. Lo possiamo verificare con ''git status'':
  
-FIXME Per iniziare la lavorare su un branch remoto...+<code> 
 +git status 
 +On branch jessie 
 +Your branch is ahead of 'origin/jessie' by 1 commit. 
 +  (use "git push" to publish your local commits) 
 +</code>
  
-  * **[[https://careerkarma.com/blog/what-is-a-git-head/|What is a Git HEAD?]]**+==== Clonare uno specifico branch ====
  
-==== Locally Committed Differences ====+Quando si clona il repository remoto è possibile indicare subito su quale branch si intende lavorare:
  
-Per vedere le differenze tra il master remoto e quello locale (**ATTENZIONE** questo comando non controlla la versione ultima presente sul repository, lavora sui dati salvati localmente!):+<code> 
 +git clone --branch jessie https://github.com/RigacciOrg/project.git 
 +</code> 
 + 
 +Con **git branch** sarà possibile verificare quale è il branch locale predefinito, marcato con un asterisco. 
 + 
 +===== Misc Commands ===== 
 + 
 +==== Restore o revert di un singolo file ==== 
 + 
 +A partire da Git 2.23 esiste il comando **git restore** che consente di ripristinare un file modificato localmente alla sua versione di checkout:
  
 <code> <code>
-git diff --name-only remotes/origin/master..master+git restore path/to/file
 </code> </code>
  
-L'opzione ''%%--name-only%%'' limita l'output al solo nome dei file cambiati.+Con versioni precedenti di Git si può usare:
  
-==== Mostrare l'URL del repository ====+<code> 
 +git checkout -- path/to/file 
 +</code> 
 + 
 +Se si desidera tornare ad uno specifico commit, si può visualizzare il log degli stessi e richiederlo esplicitamente:
  
 <code> <code>
-git remote show origin+git log path/to/file 
 +git checkout <commit_id> path/to/file
 </code> </code>
-===== Creare un tag ===== 
  
-Uno dei motivi più comuni per cui creare un **tag** è dare un nome e un numero di versione di una particolare versione del progetto. Quello che viene maracto con un tag diventa **immutabile** e non potrà essere cambiato in futuro. Per contro i **branch** servono a identificare rami diversi dello sviluppo che subiranno eventuali cambiamenti.+==== Colors ====
  
-Ad esempio per marcare la versione corrente con il nome **print3d-1.0** si esegue:+Disable GUI colors:
  
 <code> <code>
-git tag -a print3d-1.0+git config --global color.ui false
 </code> </code>
  
-se invece della versione corrente si vuole etichettare un commit precedente, bisogna individuare l'hash ed eseguire il comando (notare che l'hash è indicato in forma abbreviata):+==== Locally Committed Differences ==== 
 + 
 +Per vedere le differenze tra il master remoto e quello locale (**ATTENZIONE** questo comando non controlla la versione ultima presente sul repository, lavora sui dati salvati localmente!):
  
 <code> <code>
-git log --pretty=oneline +git diff --name-only remotes/origin/master..master
-..+
-d7dd3e5c44023bfefc6a6c649506e3e029929b4c Added a 3D printable OpenSCAD model. +
-... +
-git tag -a print3d-1.0 d7dd3e5+
 </code> </code>
  
-Infine bisogna salvare sul repository remoto (origin) il nuovo tag:+L'opzione ''%%--name-only%%'' limita l'output al solo nome dei file cambiati. 
 + 
 +==== Mostrare l'URL del repository ====
  
 <code> <code>
-git push origin print3d-1.0+git remote show origin
 </code> </code>
  
doc/appunti/prog/git.txt · Last modified: 2024/02/12 11:07 by niccolo