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
Next revisionBoth sides next revision
doc:appunti:prog:git [2022/01/09 11:55] – [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'':
  
-  * **[[https://careerkarma.com/blog/what-is-a-git-head/|What is a Git HEAD?]]**+<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>
  
-==== Locally Committed Differences ====+==== Clonare uno specifico branch ====
  
-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!):+Quando si clona il repository remoto è possibile indicare subito su quale branch si intende lavorare:
  
 <code> <code>
-git diff --name-only remotes/origin/master..master+git clone --branch jessie https://github.com/RigacciOrg/project.git
 </code> </code>
  
-L'opzione ''%%--name-only%%'' limita l'output al solo nome dei file cambiati.+Con **git branch** sarà possibile verificare quale è il branch locale predefinito, marcato con un asterisco.
  
-==== Mostrare l'URL del repository ====+===== Misc Commands ===== 
 + 
 +==== 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 remote show origin+git restore 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.+Con versioni precedenti di Git si può usare:
  
-Ad esempio per marcare la versione corrente con il nome **print3d-1.0** si esegue:+<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 tag -a print3d-1.0+git log path/to/file 
 +git checkout <commit_id> path/to/file
 </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):+==== Colors ==== 
 + 
 +Disable GUI colors:
  
 <code> <code>
-git log --pretty=oneline +git config --global color.ui false
-... +
-d7dd3e5c44023bfefc6a6c649506e3e029929b4c Added a 3D printable OpenSCAD model. +
-... +
-git tag -a print3d-1.0 d7dd3e5+
 </code> </code>
  
-Infine bisogna salvare sul repository remoto (originil nuovo tag:+==== 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 push origin print3d-1.0+git diff --name-only remotes/origin/master..master 
 +</code> 
 + 
 +L'opzione ''%%--name-only%%'' limita l'output al solo nome dei file cambiati. 
 + 
 +==== Mostrare l'URL del repository ==== 
 + 
 +<code> 
 +git remote show origin
 </code> </code>
  
doc/appunti/prog/git.txt · Last modified: 2024/02/12 11:07 by niccolo