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
doc:appunti:prog:git [2022/01/09 16:06] – [Branches] niccolodoc:appunti:prog:git [2024/02/12 11:07] (current) – [Chiave SSH per Github.com] 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> 
 + 
 +Se si desidera rimuovere un tag dal repository remoto: 
 + 
 +<code> 
 +git push --delete origin print3d-1.0
 </code> </code>
  
-==== Branches ====+===== Gestionde dei branch =====
  
 Mostra i rami di sviluppo, locali e remoti: Mostra i rami di sviluppo, locali e remoti:
Line 151: Line 168:
  
 ''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''.
 +
 +==== Creazione di un nuovo branch ====
  
 Per creare localmente un nuovo branch di nome **jessie**: Per creare localmente un nuovo branch di nome **jessie**:
Line 168: Line 187:
 </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.+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.
  
-Per iniziare a lavorare localmente su un determinato branch si usa il comando ''git checkout'':+==== Selezionare il branch di lavoro locale ==== 
 + 
 +Per iniziare a lavorare localmente su un determinato branch si usa il comando **git switch**:
  
 <code> <code>
-git checkout jessie+git switch jessie
 </code> </code>
  
-Quindi si verifica che il branch locale predefinito (marcato con un asterisco) sia effettivamente cambiato:+Si verifica che il branch locale predefinito (marcato con un asterisco) sia effettivamente cambiato:
  
 <code> <code>
Line 190: Line 211:
  
 <code> <code>
-git checkout master+git switch master
 </code> </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 210: 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>
  
Line 317: Line 361:
 ssh -T git@github.com ssh -T git@github.com
 Hi RigacciOrg! You've successfully authenticated, but GitHub does not provide shell access. Hi RigacciOrg! You've successfully authenticated, but GitHub does not provide shell access.
-</code<+</code>
  
 Verifichiamo che un repository locale sia stato clonato tramite protocollo HTTPS: Verifichiamo che un repository locale sia stato clonato tramite protocollo HTTPS:
doc/appunti/prog/git.1641740787.txt.gz · Last modified: 2022/01/09 16:06 by niccolo