lunedì 8 settembre 2025

Git: Configurazioni iniziali

Una volta installato Git, è necessario effettuare alcune configurazioni iniziali. Tali configurazioni vanno eseguite una sola volta su ogni computer e verranno mantenute tra gli aggiornamenti. Sarà sempre possibile modificare tali impostazioni successivamente.

Git include uno strumento chiamato 
git config che consente di visualizzare e modificare le impostazioni.

Le impostazioni di Git sono memorizzate in tre file di configurazione principali, a seconda del loro ambito:
  • Locale:
    Le impostazioni specifiche per un singolo repository si trovano nel file .git/config all'interno della cartella del repository stesso.
  • Globale:
    Le impostazioni che si applicano a tutti i repository di un utente sono memorizzate nel file .gitconfig nella directory home dell'utente. Il percorso esatto varia a seconda del sistema operativo:
    - macOS / Linux: ~/.gitconfig 
    - Windows: C:\Users\<NomeUtente>\.gitconfig 
  • Sistema: Le impostazioni che si applicano a tutti gli utenti del sistema si trovano nel file gitconfig nella cartella di installazione di Git, solitamente in una posizione come C:\ProgramData\Git\config su Windows o /etc/gitconfig su Linux.

Quando Git legge le impostazioni, lo fa seguendo un ordine preciso:
  1. Locale
  2. Globale
  3. Sistema
Questo significa che un'impostazione definita a livello locale sovrascriverà un'impostazione globale, che a sua volta sovrascriverà un'impostazione a livello di sistema.

Per visualizzare tutte le impostazioni e da quale file vengono prelevate è possibile utilizzare il comando
git config --list --show-origin
Impostazioni git
FIG 1 - Impostazioni Git

Identità

Quando si installa Git è fondamentale impostare il proprio nome utente e indirizzo email in modo che i propri commit possano essere identificati (tali informazioni vengono immutabilmente inserite all'interno dei commit creati).
I comandi da eseguire sono
git config --global user.name "<il_tuo_nome>" 
git config --global user.email "<indirizzo_email>"

Ad esempio
git config --global user.name "Giovanni Lubrano"
git config --global user.email giovanni.lubrano@contoso.com

Utilizzando l'opzione --global, Git utilizzerà sempre tali informazioni per l'utente sul sistema. 
Qualora si desideri sostituire tali informazioni con un nome o un indirizzo e-mail differenti per uno specifico progetto, è possibile eseguire il comando senza l’opzione --global all’interno della directory del progetto stesso.


Nome del branch predefinito

Dal 2020, GitHub e GitLab hanno adottato main come nome predefinito per i nuovi repository. Per impostazione predefinita, al momento della creazione di un nuovo repository mediante il comando git init, Git genera un ramo denominato master. A partire dalla versione 2.28 (luglio 2020), è tuttavia possibile definire un nome alternativo per il ramo iniziale, specificando quello da utilizzare come predefinito.

Per impostare main come nome predefinito del ramo, utilizzare il comando:
git config --global init.defaultBranch main


Editor predefinito 

Se non diversamente indicato, Git utilizza l’editor di testo predefinito per la redazione dei messaggi di commit e per la modifica dei file di configurazione. Durante la fase di installazione è già stato selezionato l’editor desiderato. Qualora si desideri modificarlo, è possibile farlo tramite il comando:
git config --global core.editor "<path_file_eseguibile_editor>"

Ad esempio
git config --global core.editor "C:/Program Files/Notepad++/notepad++.exe"


Controllo delle impostazioni

Per verificare le impostazioni di configurazione è possibile utilizzare il seguente comando che consente di elencare tutte le configurazioni attualmente riconosciute da Git
git config --list
Impostazioni di configurazione
FIG 2 - Impostazioni di configurazione


Alcune chiavi possono comparire più volte, in quanto Git le legge da file di configurazione differenti. In tali circostanze, per ciascuna chiave univoca viene considerato come valido l’ultimo valore rilevato.

È possibile verificare quale valore Git attribuisce a una chiave specifica digitando 
git config <chiave>

Ad esempio
git config user.name

Poiché Git può leggere il medesimo valore di una variabile di configurazione da più file, è possibile che venga restituito un risultato inatteso, la cui origine non sia immediatamente evidente. In tali circostanze, è possibile interrogare Git per determinare la provenienza del valore, ottenendo l’indicazione del file di configurazione che ha prevalso nell’assegnazione finale. Il comando da eseguire è
git config --show-origin <chiave>

Ad esempio
git config --show-origin user.name

Valore e origine di una variabile
FIG 3 - Valore e origine di una variabile


Help

Qualora si necessiti di supporto durante l’utilizzo di Git, esistono tre modalità equivalenti per accedere alla pagina di manuale (manpage) completa relativa a qualsiasi comando:
git help <comando>
git <comando> --help
man git-<comando>


Ad esempio, per visualizzare la manpage del comando git config, è sufficiente eseguire:
git help config
Help
FIG 4 - Help


Questi comandi risultano particolarmente utili poiché consentono di consultare la documentazione in qualsiasi momento, anche offline.




domenica 7 settembre 2025

Windows : Risoluzione dell'errore "Impossibile aprire l’oggetto Criteri di gruppo sul computer"

In alcuni scenari, durante l’apertura dell’Editor Criteri di Gruppo Locali (gpedit.msc), Windows può restituire il seguente errore:

Impossibile aprire l’oggetto Criteri di gruppo sul computer. Potresti non disporre delle autorizzazioni necessarie. 
Dettagli: Errore non specificato.

Nella versione inglese di Windows

Failed to open the Group Policy Object on the computer. You might not have the appropriate rights.
Details: Unspecified error

Contestualmente, tentando di aggiornare le policy tramite il comando gpupdate, può comparire un ulteriore messaggio:

Elaborazione dei Criteri di gruppo non riuscita. Windows non è stato in grado di applicare le impostazioni dei criteri basate sul registro per l’oggetto Criteri di gruppo LocalGPO. Le impostazioni di Criteri di gruppo non verranno risolte finché questo evento non verrà risolto.

Nella versione inglese il messaggio è

The processing of Group Policy failed. Windows could not apply the registry-based policy settings for the Group Policy object LocalGPO.

The processing of Group Policy failed
FIG 1 - The processing of Group Policy failed
In questi casi, nel Visualizzatore Eventi di sistema viene registrato un evento con ID 1096, che segnala l’impossibilità di applicare le impostazioni delle Criteri di Gruppo locali.


Cause del problema

L’errore si verifica in genere quando i file delle policy locali, situati nella cartella:

%windir%\System32\GroupPolicy

risultano corrotti o mancanti.

In particolare, il file Registry.pol, che contiene le impostazioni delle policy basate su registro, può essere danneggiato e impedire l’elaborazione delle regole.


Procedura di risoluzione


1. Rimuovere o rinominare il file Registry.pol

Per ripristinare il corretto funzionamento, è sufficiente rimuovere (o rinominare) il file Registry.pol corrotto.

Il file può trovarsi in uno dei seguenti percorsi:

  • %windir%\System32\GroupPolicy\Machine
  • %windir%\System32\GroupPolicy\User

Dopo la rimozione, riavviare l’Editor delle Criteri di Gruppo locali (gpedit.msc) e verificare che si apra senza errori.


2. Ricreare la cartella GroupPolicy (se necessario)

Se il problema persiste, può rendersi necessario ricreare completamente la cartella GroupPolicy.

È possibile procedere rinominando la directory corrente tramite Esplora File oppure con PowerShell:

Rename-Item -Path "C:\Windows\System32\GroupPolicy" -NewName GroupPolicy_backup

Al successivo avvio o aggiornamento delle policy, Windows rigenererà automaticamente una nuova cartella GroupPolicy.

Dopo aver verificato il corretto funzionamento, la cartella di backup può essere eliminata.




venerdì 5 settembre 2025

Git: Installazione

Iniziare con Git richiede l'installazione del software, una configurazione iniziale di base e la familiarizzazione con un set di comandi fondamentali per gestire file, salvare modifiche e interagire con repository remoti. 

Installazione di Git

Per iniziare a usare Git, il primo passo è installarlo sul proprio computer. Sebbene alcune IDE (come Microsoft Visual Studio o Xcode) possano includere librerie Git o il comando git direttamente, e alcune piattaforme web come GitHub o GitLab consentano di provare funzioni di base online, per l'uso sistematico è consigliabile avere git come comando autonomo.

Git è disponibile per diversi sistemi operativi

Linux:

L'installazione avviene tramite il gestore di pacchetti della propria distribuzione, ad esempio su:
  • Debian/Ubuntu 
    apt install git
  • Fedora/RHEL
    dnf install git
  • SUSE/openSUSE
    zypper install git
È consigliabile iniziare con il pacchetto git base e aggiungere altri strumenti solo se necessario, poiché git-all può includere molti pacchetti aggiuntivi.

macOS:
Le istruzioni per l'installazione sono disponibili nella guida ufficiale di Git.

Windows: L'installazione su Windows è più articolata. Il programma di setup scaricabile da git-scm.com/downloads installa non solo il comando git, ma anche un ambiente terminale (Git Bash) con strumenti Linux essenziali (bash, ls, find, grep, tar, gzip) e l'interfaccia grafica Git GUI. Durante l'installazione, è possibile configurare l'editor predefinito (se non si vuole usare vim che è lo standard di Git Bash), il nome del branch predefinito (ora comunemente main anziché master), e come la variabile d'ambiente PATH viene impostata. Git per Windows utilizza anche Git Credential Manager per una gestione più semplice delle credenziali.

Verifica dell'installazione: Dopo l'installazione, si può verificare che Git sia correttamente disponibile digitando git --version nel terminale o PowerShell.


Negli articoli dedicati a Git, verranno utilizzati esempi e procedure operative basate su un ambiente Windows.


Installazione passo passo in ambiente Windows

Da git-scm.com/downloads eseguire il download della versione aggiornata di Git per Windows.

Download Git per Windows
FIG 1 - Download Git per Windows

Avviare l'eseguibile scaricato e cliccare su  nella finestra del Controllo account utente (UAC).

Controllo account utente (UAC)
FIG 2 - Controllo account utente (UAC)

Nella prima schermata ci viene proposta la licenza (GNU General Public License). Per accettare le condizioni e procedere, cliccare sul pulsante Next.

Git,GNU General Public License
FIG 3 - Git, GNU General Public License

Selezione della cartella di destinazione per l'installazione (Select Destination Location). Per l'installazione è possibile lasciare il percorso predefinito, modificarlo cliccando sul pulsante Browse o digitarlo manualmente nell'apposita casella. Cliccare su Next per proseguire.


Select Destination Location
FIG 4 - Select Destination Location

Nella finestra Select Components siamo chiamati a selezionare i componenti da installare che ci interessano. Di solito, le opzioni predefinite sono sufficienti, ma è possibile aggiungere l'icona sul desktop, permettere a Git di verificare giornalmente gli aggiornamenti (Check daily for Git for Windows update) o aggiungere un profilo Git Bash al terminale di Windows (Add a Git Bash Profile to Windows Terminal). Cliccare su Next.

Select Components
FIG 5 - Select Components

Select Start Menu Folder. Se si desidera poter cercare ed eseguire git dal menu Start, lasciare tutto com'è. In caso contrario selezionare la casella "Don't create a Start Menu folder". Cliccare su Next.

Select Start Menu Folder
FIG 6 - Select Start Menu Folder

Selezionare l'editor di default utilizzato da Git (Choosing the default editor used by Git). Per questioni storiche, anche in ambiente Windows, viene proposto Vim come editor predefinito di Git. Si tratta di un editor molto potente ma che potrebbe risultare ostico per chi è abituato agli editor visuali presenti nei sistemi operativi Microsoft.

Choosing the default editor used by Git
FIG 7 - Choosing the default editor used by Git

Tra gli editor di testo proposti troviamo: Sublime, Atom, Vim, Nano, Wordpad, VSCodium, Notepad, Notepad++ o Visual Studio Code. Generalmente, in ambiente Windows, gli utenti scelgono Notepad++ o Visual Studio Code. 

Editor di testo proposti
FIG 8 - Editor di testo proposti

Se l'editor selezionato non è già installato sul PC, il tasto Next risulterà disabilitato. In questi casi è possibile cliccare sull'apposito link per accedere al sito del produttore dell'editor di testo e procedere al download e all'installazione. Dopodiché sarà possibile cliccare su Next per proseguire.

Editor Notepad++
FIG 9 - Editor Notepad++

Modifica del nome del ramo iniziale nei nuovi repository (Adjusting the name of the initial branch in new repositories). In questa schermata possiamo decidere se utilizzare master o il più recente main come nome predefinito del branch. In caso si dubbi lasciare selezionata l'opzione proposta (Let Git decide) e cliccare su Next.

Adjusting the name of the initial branch in new repositories
FIG 10 - Adjusting the name of the initial branch in new repositories

Adjusting your PATH environment. L'opzione consigliata è "Git from the command line and also from 3rd-party software", in quanto aggiunge Git al PATH di Windows, permettendo di usarlo da qualsiasi terminale (prompt dei comandi, PowerShell e da software di terze parti che interrogano la variabile d'ambiente PATH per individuare il percorso di git. Se non si hanno esigenze particolari, lasciare selezionata l'opzione consigliata e cliccare su Next.
Adjusting your PATH environment
FIG 11 - Adjusting your PATH environment

Choosing the SSH executable. In questa fase possiamo scegliere quale client Secure Shell utilizzare: quello integrato in Git o un client esterno installato sul PC. L'opzione predefinita e raccomandata è "Use bundled OpenSSH". Cliccare su Next per proseguire.
Choosing the SSH executable
FIG 12 - Choosing the SSH executable


Choosing HTTPS transpost backend. Permette di impostare quale libreria SSL/TLS Git deve utilizzare per le connessioni HTTPS. Lasciare selezionata l'impostazione suggerita di default (Use the native Windows Secure Channel library) e cliccare su Next.
Choosing HTTPS transpost backend
FIG 13 - Choosing HTTPS transpost backend

Opzioni per la conversione dei caratteri di fine riga (Configuring the line ending conversions). L'opzione predefinita, "Checkout Windows-style, commit Unix-style line endings", è quella consigliata in ambiente Windows. Git convertirà LF in CRLF durante il checkout dei file di testo. Quando si 
eseguono i commit dei file di testo, CRLF verrà convertito in LF. Cliccare su Next.
Configuring the line ending conversions
FIG 14 - Configuring the line ending conversions

Configurare il terminale da usare con Git Bash (Configuring the terminal emulator to use with Git Bash). Lasciare selezionata l'opzione predefinita opzione  "Use MinTTY" e cliccare su Next.
Configuring the terminal emulator to use with Git Bash
FIG 15 - Configuring the terminal emulator to use with Git Bash

Comportamento predefinito di 'git pull' (Choose the default behavior of 'git pull'):
  • Fast-forward or merge
    Avanza velocemente (fast-forward) il branch corrente al branch recuperato quando possibile, altrimenti crea un commit di merge.
  • Rebase
    Rebase del branch corrente sul branch recuperato. Se non ci sono commit locali da ribasare, questo equivale a un fast-forward.
  • Only ever fast-forward
    Avanza velocemente (fast-forward) al branch recuperato. Fallisce se non è possibile. Questo è il comportamento standard di 'git pull'.
La terza opzione può essere utilizzata da chi ama essere estremamente cauto e prudente, ma richiede passaggi aggiuntivi per ottenere lo stesso risultato che si ottiene normalmente con la prima e la seconda opzione. L'impostazione predefinita della prima opzione, ovvero l'avanzamento rapido o l'unione, va bene nella maggior parte dei casi. Per chi preferisce una cronologia dei commit pulita e senza commit di unione, la seconda opzione è altrettanto valida. 
Choose the default behavior of 'git pull'
FIG 16 - Choose the default behavior of 'git pull'


Choose a credential helper. Lasciare selezionata l'opzione Git Credential Manager e cliccare su Next.
Choose a credential helper
FIG 17 - Choose a credential helper

Configurazione delle opzioni extra (Configuring extra options). Lasciare selezionata l'opzione Enable file system caching e cliccare su Install per avviare l'installazione. Tale impostazione abilita la cache del file system. I dati del file system verranno letti in blocco e memorizzati nella cache in memoria per alcune operazioni ("core.fscache" è impostato su "true"). Questo fornisce un notevole incremento delle prestazioni.
Configuring extra options
FIG 18 - Configuring extra options

A questo punto viene avviata la copia dei file e l'installazione di Git.
Avvio Installazione
FIG 19 - Avvio Installazione

Terminata l'installazione, togliere il flag alla casella View Release Notes e cliccare su Finish.
Installazione completata
FIG 20 - Installazione completata


Per verificare che Git sia presente sulla macchina, da una finestra terminale eseguire il comando
git --version 
Se installato correttamente verrà visualizzata la versione di git.
git version
FIG 21 - git version





giovedì 4 settembre 2025

Git: Introduzione

Quando più persone collaborano a un progetto software, è fondamentale disporre di un sistema che consenta di registrare tutte le modifiche in modo chiaro e tracciabile. Un sistema di controllo di versione non si limita a conservare la cronologia del codice: permette a ogni sviluppatore di accedere all’intero progetto, di conoscere l’evoluzione del lavoro dei colleghi, di sperimentare soluzioni alternative e di verificarne l’interazione con i propri contributi.

Negli anni sono stati adottati diversi strumenti con questo obiettivo – dal Concurrent Versions System (CVS) ad Apache Subversion (SVN), fino a Microsoft Visual SourceSafe (VSS). Tuttavia, nell’ultimo decennio si è affermato un nuovo protagonista: Git, che oggi rappresenta lo standard de facto nella gestione del codice sorgente.

In questa serie di articoli dedicata a Git cercherò di offrire una panoramica completa: dalle sue caratteristiche fondamentali alle pratiche avanzate, dagli scenari di collaborazione quotidiana alle strategie di branching e integrazione continua. L’obiettivo è fornire non solo nozioni tecniche, ma anche spunti pratici e metodologici per sfruttare al meglio uno strumento che ha trasformato il modo di sviluppare software.

git logo


Cos'è Git?

Git è un sistema di controllo versione (VCS), o più precisamente, un sistema di controllo versione distribuito (DVCS). La sua funzione principale è registrare le modifiche apportate a un file o a un insieme di file nel tempo, consentendo di richiamare versioni specifiche in un secondo momento. Nel mondo della programmazione, dove la collaborazione è essenziale, Git consente agli sviluppatori di scrivere, testare e iterare il codice in tandem con altri membri del team, mantenendo modifiche organizzate e tracciabili ed evitando la perdita di lavoro. Altri VCS noti sono Fossil, Mercurial e Subversion.

Origine e Scopo 

Git è nato dalla necessità di Linus Torvalds, il capo sviluppatore di Linux, di un nuovo sistema di gestione delle versioni per lo sviluppo del kernel Linux. Precedentemente, la comunità degli sviluppatori utilizzava il programma proprietario BitKeeper, ma un cambio di licenza rese necessario un passaggio ad un nuovo sistema. Nessun programma open source disponibile all'epoca soddisfaceva i suoi elevati standard, così Torvalds creò il framework di base per Git in sole due settimane. Ironia della sorte, il nome "Git" sta per "stupido" o "idiota", e la pagina di aiuto man git si riferisce ad esso come allo "stupid content tracker". Tuttavia, questa definizione si è rivelata un eufemismo, dato che Git ha rivoluzionato il mondo del software, tanto che alcuni ne valutano l'importanza quanto quella di Linux.

Caratteristiche Principali

Controllo di Versione Distribuito (DVCS): A differenza di molti altri programmi di controllo versione, Git è stato progettato con organizzazioni decentralizzate in mente. Non si basa su un singolo server centrale per operare su un progetto, permettendo a ogni membro del team di lavorare indipendentemente su una copia locale del progetto principale: ogni sviluppatore ha una copia locale completa del progetto, con tutta la sua storia, il che permette di lavorare offline

Snapshot e Commit: Ogni volta che si desidera salvare delle modifiche, Git acquisisce un "istantanea" (snapshot) dello stato attuale del progetto. Questi snapshot sono chiamati commit. Idealmente, ogni commit dovrebbe rappresentare una singola modifica concettuale.

Efficienza e Velocità: Git è estremamente veloce ed efficiente, anche con progetti di grandi dimensioni come il kernel Linux, che ha quasi un milione di commit e oltre 700 release taggate.

Sistema di Branching Potente: Una delle caratteristiche più apprezzate di Git è il suo incredibile sistema di branching, che facilita lo sviluppo non lineare.

Git vs. GitHub/GitLab e Interfacce Utente

È importante distinguere tra "Git" (il sistema di controllo versione nella sua interezza, inclusi concetti e idee) e git (il comando per utilizzare queste funzioni). Git è uno strumento autonomo che può essere utilizzato senza repository centrali. Le piattaforme esterne, come GitHub, GitLab, Azure Repos, Bitbucket, Gitea, e Gitolite, sono servizi di hosting che facilitano la collaborazione, fungono da backup aggiuntivi e offrono funzioni extra come la gestione di problemi (issue tracking), la documentazione (wiki) e l'automazione dei test. Anche il kernel Linux è ora su GitHub.

Esistono vari modi per interagire con Git:

  • Riga di Comando (CLI): Le fonti sottolineano che la riga di comando è l'unico luogo dove è possibile eseguire tutti i comandi Git, poiché la maggior parte delle interfacce grafiche (GUI) implementa solo un sottoinsieme parziale delle funzionalità di Git per semplicità.
  • Interfacce Utente Grafiche (GUI) e IDE: Molti IDE popolari (come Microsoft Visual Studio, Xcode, IntelliJ IDEA, Android Studio) e editor (Atom, Sublime Text, Visual Studio Code) offrono comandi di menu per eseguire operazioni Git elementari.


Complessità e Apprendimento

Nonostante la sua potenza, Git è stato chiaramente progettato da professionisti per professionisti e non è facile da usare. I principianti possono incontrare messaggi di errore incomprensibili e trovarsi in difficoltà. Una buona comprensione di come funziona Git internamente è fondamentale per acquisire la fiducia necessaria a risolvere problemi come i conflitti di merge. Investire tempo per imparare Git sistematicamente è un'abilità fondamentale a lungo termine per ogni sviluppatore.


Concetti Fondamentali di Git

Comprendere la terminologia è il primo passo per padroneggiare Git.

- Repository
Un repository (o "magazzino") è la collezione di tutti i file che compongono un progetto, inclusi tutte le versioni precedenti e i rami di sviluppo. Quando si salva una modifica, Git ne fa una "istantanea" (snapshot). Un repository Git viene inizializzato all'interno della cartella che si desidera controllare in versione. Il repository può essere locale o remoto:
  • Repository Locale: La copia completa del repository sul computer di un utente.
  • Repository Remoto: Un repository esterno, spesso ospitato su piattaforme come GitHub o GitLab, utilizzato per la sincronizzazione e la collaborazione. Il repository origin è quello esterno da cui il progetto è stato originariamente clonato o configurato come predefinito.

- Directory .git:
È una cartella nascosta che contiene tutti i file necessari a Git per funzionare, come la configurazione del repository, i ganci (hooks), gli oggetti Git (commits, BLOBs, trees, tags) e i riferimenti. Copiare questa directory altrove è sufficiente per fare un backup o clonare il repository.


- Commit
Un commit è un'istantanea permanente delle modifiche apportate al progetto. Contiene i metadati della modifica (data, autore, messaggio, firma) e puntatori a un oggetto "tree" (che elenca i file versionati) e al commit precedente (il suo "genitore"). Una sequenza di commit forma la storia del repository. All'interno dei Commit è possibile inserire dei messaggi. 

I Messaggi di Commit dovrebbero essere concisi (prima riga preferibilmente <50 caratteri) e descrivere chiaramente le modifiche. La seconda riga può rimanere vuota, e dalla terza in poi possono seguire maggiori dettagli. Possono includere riferimenti a problemi (issues) e pull request.


- Staging Area (o Index)
È un'area temporanea dove si preparano i file per il prossimo commit. Le modifiche vengono prima aggiunte qui tramite git add prima di essere salvate in un commit. Internamente, Git gestisce l'area di staging tramite il file .git/index in formato binario.


-BLOB (Binary Large Object)
Contiene il contenuto effettivo dei file versionati. Ogni versione di un file ha un BLOB corrispondente.


- Tree Object:
Rappresenta la struttura delle directory in un dato momento. Contiene puntatori a BLOB (per i file) e ad altri Tree Object (per le sottocartelle).


- References (Refs)
Sono piccoli file che puntano a specifici oggetti Git, il più delle volte a un commit. Esempi includono riferimenti ai commit più recenti dei rami locali e remoti (.git/refs/heads e .git/refs/remotes), e ai commit etichettati (.git/refs/tags).

  • HEAD: Un riferimento speciale che punta al commit corrente del ramo attivo. Può essere "staccato" (detached HEAD) se si controlla direttamente un commit invece di un ramo.
  • Reflog: Un log locale delle azioni Git che modificano il HEAD o il capo di un ramo nel repository locale. È utile per recuperare commit persi.
  • Range Syntax: Permette di specificare intervalli di commit usando notazioni come rev1..rev2 o rev1...rev2.


Branches (Rami)
Rappresentano linee di sviluppo indipendenti. In Git, un ramo è semplicemente un puntatore al commit più recente di quella linea di sviluppo. I rami sono facili e veloci da creare e unire, ed è una delle caratteristiche distintive di Git.
  • Ramo main (precedentemente master): Il ramo predefinito e principale di un nuovo repository. La denominazione è cambiata da master a main intorno al 2020 per evitare termini controversi.
  • Tracking Branches: Rami locali che sono configurati per seguire un ramo su un repository remoto.
  • Flussi di Lavoro con i Rami: I rami sono fondamentali per la collaborazione. Flussi di lavoro comuni includono lo sviluppo di funzionalità su rami separati (feature branches) che vengono poi integrati nel ramo principale.

Tags (Etichette):
Servono per etichettare commit particolarmente importanti, spesso per contrassegnare versioni di rilascio del software (es. v1.0.0). Esistono tag semplici (leggeri) e tag annotati, che includono metadati aggiuntivi.





lunedì 1 settembre 2025

Windows: Comandi utili

Questo articolo illustra una serie di comandi essenziali per l'ambiente Windows che ogni sistemista IT dovrebbe conoscere e saper applicare.

Windows

Comandi di Rete e Informazioni di Sistema

Comando Descrizione Esempio
ipconfig
Visualizza le informazioni di configurazione IP.
ipconfig /all
ipconfig/?
systeminfo
Visualizza le informazioni di sistema.
systeminfo
netstat
Visualizza le statistiche di rete.
netstat -ano
whoami
Visualizza l'utente corrente.
whoami
getmac
Visualizza l'indirizzo MAC. Lo switch `/v` aggiunge un output dettagliato, fornendo informazioni più approfondite
getmac /v
hostname
Visualizza il nome del computer.
hostname
ver
Visualizza la versione di Windows.
ver
winver
Visualizza la versione e la build di Windows.
winver
ping
Verifica la connettività di rete. Sostituisci n [numero] con il numero di ping che desideri inviare
ping google.com
ping -n 13 google.com
tracert
Traccia il percorso verso una destinazione.
tracert microsoft.com
nslookup
Interroga i server DNS.
nslookup google.com
sfc
Scansiona e ripara i file di sistema.
sfc /scannow
pathping
Un'utilità da riga di comando che unisce le funzionalità dei comandi 'ping' e 'tracert'. Traccia il percorso tra una sorgente e una destinazione, fornendo informazioni dettagliate sulla latenza di rete e sulla perdita di pacchetti a ogni hop lungo il percorso.
pathping -n -p 100 example.com
Questo imposta 10 query per hop, disabilita la risoluzione dei nomi host e imposta 100 ms tra i ping)


Gestione Processi, File e Directory

Comando Descrizione Esempio
tasklist
Elenca i processi in esecuzione.
tasklist
taskkill
Termina i processi. /IM sta per "Nome Immagine". Il flag /F forza la terminazione del processo
taskkill /IM notepad.exe /F
taskkill /PID process_id /F
taskkill /IM chrome* /F
chkdsk
Controlla il disco in cerca di errori.
chkdsk C:
diskpart
Gestisce dischi e partizioni.
diskpart (seguito da list disk)
format
Formatta un disco.
format C: /fs:ntfs
xcopy
Copia file e directory.
xcopy C:\source D:\dest /E
robocopy
Utilità avanzata per la copia di file.
robocopy C:\source D:\dest /E
dir
Elenca file e directory.
dir C:
md
Crea una nuova directory.
md NewFolder
cd
Cambia directory.
cd C:\Users
rd
Rimuove una directory.
rd OldFolder
del
Elimina file.
del C:\file.txt
copy
Copia file.
copy C:\file.txt D:\
move
Sposta file.
move C:\file.txt D:\
ren
Rinomina file o directory.
ren oldname.txt newname.txt
type
Visualizza il contenuto di un file di testo
type C:\file.txt
find
Cerca una stringa di testo nei file.
find "error" C:\log.txt
findstr
Cerca stringhe nei file.
ipconfig /all | findstr DNS
sort
Ordina alfabeticamente il contenuto di un file.
sort names.txt
comp
Confronta il contenuto di due file.
comp file1.txt file2.txt
fc
Confronta i file e visualizza le differenze.
fc file1.txt file2.txt
tree
Visualizza graficamente la struttura delle directory.
tree C:


Gestione Utenti e Sistema

Comando Descrizione Esempio
attrib
Modifica gli attributi dei file.
attrib +r C:\file.txt
cipher
Visualizza o modifica la crittografia dei file.
cipher /e "C:\Secret Folder"
compact
Visualizza o modifica la compressione dei file.
compact /c C:\folder
powercfg
Gestisce le impostazioni di alimentazione.
powercfg /energy
shutdown
Spegne o riavvia il computer.
shutdown /r /t 0
gpupdate
Aggiorna le impostazioni di Criteri di gruppo.
gpupdate /force
gpresult
Visualizza i risultati dei Criteri di gruppo.
gpresult /r
net user
Gestisce gli account utente.
net user "John Doe" newpassword
net localgroup
Gestisce i gruppi locali.
net localgroup Administrators
net start
Avvia un servizio.
net start "Print Spooler"
net stop
Arresta un servizio.
net stop "Print Spooler"
netsh
Strumento di configurazione di rete.
netsh wlan show profiles
sc
Gestisce i servizi di Windows.
sc query
reg
Gestisce il registro.
reg query HKLM\Software
runas
Esegue un programma come un utente diverso.
runas /user:Admin cmd
schtasks
Pianifica comandi e programmi.
schtasks /create /tn "MyTask" /tr notepad.exe /sc daily
wmic
Una potente utilità di Windows che può essere utilizzata sia per attività di amministrazione di sistema legittime che da attaccanti.
Informazioni di sistema:
wmic os get name, version, buildnumber
Elenco software:
wmic product get name, version
Persistenza malware:
wmic startup create name="malware", command="C:\malware.exe"
Tecnica di evasione:
wmic process where name="antivirus.exe" delete



Comandi per Utilità e GUI

Comando Descrizione Esempio
assoc
Visualizza o modifica le associazioni delle estensioni dei file.
assoc .txt
ftype
Visualizza o modifica i tipi di file.
ftype txtfile
driverquery
Visualizza i driver dei dispositivi installati.
driverquery
msinfo32
Visualizza le informazioni di sistema.
msinfo32
mmc
Apre la Microsoft Management Console.
mmc
eventvwr
Apre il Visualizzatore Eventi.
eventvwr
services.msc
Apre la console di gestione dei Servizi.
services.msc
devmgmt.msc
Apre la Gestione Dispositivi.
devmgmt.msc
diskmgmt.msc
Apre la Gestione Disco.
diskmgmt.msc
taskmgr
Apre il Task Manager.
taskmgr
perfmon
Apre il Monitoraggio Prestazioni.
perfmon
resmon
Apre il Monitoraggio Risorse.
resmon
msconfig
Apre la Configurazione di Sistema.
msconfig
control
Apre il Pannello di Controllo.
control
mstsc
Apre la Connessione Desktop Remoto.
mstsc
cleanmgr
Apre la Pulizia Disco.
cleanmgr
defrag
Deframmenta un'unità.
defrag C:
fsutil fsinfo drives
Utilità del file system.
fsutil fsinfo drives
path
Visualizza o imposta la variabile d'ambiente PATH.
path
set
Visualizza, imposta o rimuove le variabili d'ambiente.
set
echo
Visualizza messaggi o attiva/disattiva l'eco dei comandi.
echo Hello World
cls
Cancella lo schermo.
cls
query
Visualizza le informazioni sui processi in esecuzione su un server Host sessione Desktop remoto.
query process
(Per mostrare tutti i processi)
winget
Winget è il gestore ufficiale di pacchetti di Microsoft per Windows 10 e Windows 11. Permette agli utenti di scoprire, installare, aggiornare, rimuovere e configurare facilmente le applicazioni dalla riga di comando.
Elenca applicazioni installate:
winget list
Cerca un'applicazione:
winget search
Installa un'applicazione:
winget install
Aggiorna un'applicazione:
winget upgrade