doc:appunti:prog:git
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision | ||
doc:appunti:prog:git [2022/01/09 15:50] – [Branches] niccolo | doc: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: | git remote set-url origin git@github.com: | ||
</ | </ | ||
+ | |||
==== git clone ==== | ==== git clone ==== | ||
Line 122: | Line 123: | ||
Dalla propria home page, cliccare sul fork. Controllare che il titolo della pagina sia **%%< | Dalla propria home page, cliccare sul fork. Controllare che il titolo della pagina sia **%%< | ||
- | ===== 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: | ||
< | < | ||
- | git log path/ | + | git tag -a print3d-1.0 |
- | git checkout < | + | |
</ | </ | ||
- | ==== 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: | + | < |
+ | git log --pretty=oneline | ||
+ | ... | ||
+ | d7dd3e5c44023bfefc6a6c649506e3e029929b4c Added a 3D printable OpenSCAD model. | ||
+ | ... | ||
+ | git tag -a print3d-1.0 d7dd3e5 | ||
+ | </ | ||
+ | |||
+ | Infine bisogna salvare sul repository remoto (origin) il nuovo tag: | ||
< | < | ||
- | git config | + | git push origin print3d-1.0 |
+ | </ | ||
+ | |||
+ | Se si desidera rimuovere un tag dal repository remoto: | ||
+ | |||
+ | < | ||
+ | git push --delete origin print3d-1.0 | ||
</ | </ | ||
- | ==== Branches | + | ===== Gestionde dei branch ===== |
Mostra i rami di sviluppo, locali e remoti: | Mostra i rami di sviluppo, locali e remoti: | ||
Line 151: | Line 168: | ||
'' | '' | ||
+ | |||
+ | ==== Creazione di un nuovo branch ==== | ||
Per creare localmente un nuovo branch di nome **jessie**: | Per creare localmente un nuovo branch di nome **jessie**: | ||
Line 158: | Line 177: | ||
</ | </ | ||
- | Si può verificare che sia stato creato | + | Si può verificare che sia stato creato: |
< | < | ||
Line 168: | Line 187: | ||
</ | </ | ||
- | 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 propagare | + | ==== Selezionare |
+ | |||
+ | Per iniziare a lavorare localmente su un determinato branch si usa il comando **git switch**: | ||
< | < | ||
- | git push --set-upstream origin | + | git switch |
</ | </ | ||
- | Con il comando '' | + | Si verifica che il branch |
< | < | ||
- | jessie | + | git branch -a |
- | * master | + | * jessie |
+ | | ||
remotes/ | remotes/ | ||
remotes/ | remotes/ | ||
Line 186: | Line 208: | ||
</ | </ | ||
- | Sul repository remoto il branch | + | In ogni momento è possibile cambiare |
- | Con il comando | + | < |
+ | git switch master | ||
+ | </ | ||
+ | |||
+ | **ATTENZIONE** Prima di Git 2.23 si utilizzava il comando | ||
+ | |||
+ | ==== Propagare un branch locale anche in remoto ==== | ||
+ | |||
+ | Per propagare il nuovo branch anche sul repository remoto: | ||
< | < | ||
- | git checkout | + | git push --set-upstream origin jessie |
</ | </ | ||
+ | |||
+ | È possibile verificare che localmente si sta lavorando ancora sul branch **master** e che sul repository remoto esistono i branch **master** e **jessie**: | ||
< | < | ||
git branch -a | git branch -a | ||
- | * buster | + | jessie |
- | master | + | * master |
remotes/ | remotes/ | ||
remotes/ | remotes/ | ||
Line 203: | Line 235: | ||
</ | </ | ||
+ | Avendo fatto lo switch (o il checkout) ad uno specifico branch, gli eventuali commit andranno su di esso. Lo possiamo verificare con '' | ||
+ | < | ||
+ | git status | ||
+ | On branch jessie | ||
+ | Your branch is ahead of ' | ||
+ | (use "git push" to publish your local commits) | ||
+ | </ | ||
+ | ==== Clonare uno specifico branch ==== | ||
- | FIXME Per iniziare la lavorare | + | Quando si clona il repository remoto è possibile indicare subito |
- | * **[[https://careerkarma.com/blog/what-is-a-git-head/|What is a Git HEAD?]]** | + | < |
+ | git clone --branch jessie | ||
+ | </code> | ||
- | ==== Locally Committed Differences ==== | + | Con **git branch** sarà possibile verificare quale è il branch locale predefinito, |
- | 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 | + | ===== Misc Commands ===== |
+ | |||
+ | ==== Restore o revert di un singolo file ==== | ||
+ | |||
+ | A partire da Git 2.23 esiste | ||
< | < | ||
- | git diff --name-only remotes/origin/master..master | + | git restore path/to/file |
</ | </ | ||
- | L' | + | Con versioni precedenti di Git si può usare: |
- | ==== Mostrare l'URL del repository ==== | + | < |
+ | git checkout -- path/ | ||
+ | </ | ||
+ | |||
+ | Se si desidera tornare ad uno specifico commit, si può visualizzare il log degli stessi e richiederlo esplicitamente: | ||
< | < | ||
- | git remote show origin | + | git log path/ |
+ | git checkout < | ||
</ | </ | ||
- | ===== 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: |
< | < | ||
- | git tag -a print3d-1.0 | + | git config |
</ | </ | ||
- | se invece della versione corrente si vuole etichettare un commit precedente, bisogna individuare l'hash ed eseguire | + | ==== Locally Committed Differences ==== |
+ | |||
+ | Per vedere le differenze tra il master remoto e quello locale | ||
< | < | ||
- | git log --pretty=oneline | + | git diff --name-only remotes/ |
- | ... | + | |
- | d7dd3e5c44023bfefc6a6c649506e3e029929b4c Added a 3D printable OpenSCAD model. | + | |
- | ... | + | |
- | git tag -a print3d-1.0 d7dd3e5 | + | |
</ | </ | ||
- | Infine bisogna salvare sul repository | + | L' |
+ | |||
+ | ==== Mostrare l'URL del repository | ||
< | < | ||
- | git push origin | + | git remote show origin |
</ | </ | ||
doc/appunti/prog/git.txt · Last modified: 2024/02/12 11:07 by niccolo