Skip to content

GitHub Flavored Markdown (GFM) ​

GitHub Flavored Markdown (GFM) è la versione avanzata di Markdown di GitHub con funzionalità aggiuntive progettate specificamente per lo sviluppo software e la collaborazione. Questa guida copre tutte le estensioni di sintassi speciali disponibili su GitHub.

Cos'è GitHub Flavored Markdown (GFM)? ​

GitHub Flavored Markdown estende la sintassi base di Markdown con funzionalità che lo rendono più utile per:

  • Documentazione (README, wiki)
  • Tracciamento delle issue
  • Pull request
  • Revisione del codice
  • Gestione dei progetti

Funzioni Principali del GFM ​

1. Blocchi di Codice Delimitati ​

GFM supporta blocchi di codice delimitati con evidenziazione della sintassi specifica per linguaggio:

```javascript
function calculateSum(numbers) {
  return numbers.reduce((sum, num) => sum + num, 0);
}

const result = calculateSum([1, 2, 3, 4, 5]);
console.log(result); // Output: 15
```
javascript
function calculateSum(numbers) {
  return numbers.reduce((sum, num) => sum + num, 0);
}

const result = calculateSum([1, 2, 3, 4, 5]);
console.log(result); // Output: 15

2. Evidenziazione della Sintassi ​

GitHub supporta l'evidenziazione della sintassi per centinaia di linguaggi. Alcuni comuni includono:

bash
# Script Bash
echo "Hello GitHub!"
python
# Script Python
def greet(name):
    return f"Hello, {name}!"
java
// Codice Java
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello GitHub!");
    }
}

3. Elenchi di Attività ​

Crea elenchi di attività interattivi con caselle di controllo:

markdown
- [x] Completare l'autenticazione utente
- [x] Implementare gli endpoint API
- [ ] Scrivere test unitari
  - [ ] Test backend
  - [ ] Test frontend
- [ ] Distribuire in produzione
  • [x] Completare l'autenticazione utente
  • [x] Implementare gli endpoint API
  • [ ] Scrivere test unitari
    • [ ] Test backend
    • [ ] Test frontend
  • [ ] Distribuire in produzione

4. Tabelle ​

GFM fornisce una sintassi semplice per creare tabelle:

markdown
| Funzionalità       | Supportata | Descrizione                     |
|--------------------|------------|---------------------------------|
| Fenced Code        | ✅         | Evidenziazione specifica        |
| Task Lists         | ✅         | Caselle di controllo interattive|
| Tables             | ✅         | Visualizzazione dati strutturati|
| Mentions           | ✅         | Notifiche utente e team         |
| Emoji              | ✅         | Espressioni visive              |
FunzionalitàSupportataDescrizione
Fenced Code✅Evidenziazione specifica
Task Lists✅Caselle di controllo interattive
Tables✅Visualizzazione dati strutturati
Mentions✅Notifiche utente e team
Emoji✅Espressioni visive

5. Menzioni ​

Menziona utenti o team per notificarli:

markdown
@username - Menziona un utente specifico
@team-name - Menziona un team

6. Emoji ​

Aggiungi emoji usando shortcode:

markdown
:smile: - 😊
:thumbsup: - 👍
:heart: - ❤️
:rocket: - 🚀
:warning: - ⚠️

😄 - 😊 👍 - 👍 ❤️ - ❤️ 🚀 - 🚀 ⚠️ - ⚠️

7. Collegamento Automatico ​

GFM collega automaticamente determinati tipi di contenuto:

Numeri di Issue e Pull Request ​

markdown
#123 - Collega all'issue 123
PR #456 - Collega alla pull request 456

Hash SHA ​

markdown
a1b2c3d - Collega al commit con questo SHA

Menzioni Utente in Issue/PR ​

markdown
@username - Collega automaticamente al profilo utente

URL ​

markdown
https://github.com - Diventa automaticamente un collegamento

8. Barrato ​

GFM supporta il testo barrato:

markdown
~~Questo testo è barrato~~

Questo testo è barrato

9. Riferimenti Collegamento Automatico ​

GFM crea automaticamente collegamenti per:

  • URL HTTP/HTTPS
  • Indirizzi email
  • Numeri di issue/PR GitHub
  • SHA di commit
markdown
https://github.com/markdownlang/markdownlang.com
user@example.com
#123
PR #456
a1b2c3d4e5f6

10. Evidenziazione Righe nei Blocchi di Codice ​

Evidenzia righe specifiche nei blocchi di codice:

```javascript{2,4}
function calculateSum(numbers) {
  return numbers.reduce((sum, num) => sum + num, 0); // Highlighted
}

const result = calculateSum([1, 2, 3, 4, 5]); // Highlighted
console.log(result);
```
javascript
function calculateSum(numbers) {
  return numbers.reduce((sum, num) => sum + num, 0); // Highlighted
}

const result = calculateSum([1, 2, 3, 4, 5]); // Highlighted
console.log(result);

11. Evidenziazione Sintassi Diff ​

Evidenzia le modifiche nel codice con la sintassi diff:

```diff
- const oldFunction = () => {
-   return "old value";
- };
+
+ const newFunction = () => {
+   return "new value";
+ };
```
diff
- const oldFunction = () => {
-   return "old value";
- };
+
+ const newFunction = () => {
+   return "new value";
+ };

12. Markup Specifico di GitHub ​

Avvisi ​

Usa una sintassi speciale per gli avvisi nella documentazione GitHub:

markdown
> [!NOTE]
> Questo è un avviso di nota.

> [!TIP]
> Questo è un avviso di suggerimento.

> [!IMPORTANT]
> Questo è un avviso importante.

> [!WARNING]
> Questo è un avviso di avvertimento.

> [!CAUTION]
> Questo è un avviso di cautela.

NOTE

Questo è un avviso di nota.

TIP

Questo è un avviso di suggerimento.

IMPORTANT

Questo è un avviso importante.

WARNING

Questo è un avviso di avvertimento.

CAUTION

Questo è un avviso di cautela.

Collegamenti Relativi ​

Usa collegamenti relativi per navigare tra i file nello stesso repository:

markdown
[README](/README.md)
[Linee Guida per il Contributo](/CONTRIBUTING.md)
[Documentazione API](/docs/api.md)

Collegamenti Immagine con Testo al Passaggio del Mouse ​

markdown
![GitHub Logo](/images/github-logo.png "GitHub Logo - Testo al Passaggio del Mouse")

Uso Avanzato del GFM ​

1. Elenchi Annidati con Elenchi di Attività ​

Combina elenchi annidati con elenchi di attività:

markdown
## Roadmap del Progetto

### Fase 1: Pianificazione
- [x] Definire l'ambito del progetto
- [x] Identificare i requisiti
  - [x] Requisiti funzionali
  - [x] Requisiti non funzionali
- [x] Creare la timeline

### Fase 2: Sviluppo
- [x] Configurare la struttura del progetto
- [ ] Implementare le funzionalità principali
  - [x] Autenticazione
  - [ ] Dashboard
  - [ ] Integrazione API

2. Tabelle con Emoji e Collegamenti ​

Migliora le tabelle con emoji e collegamenti:

markdown
| Componente     | Stato              | Manutentore  |
|----------------|--------------------|--------------|
| Autenticazione | ✅ Stabile         | @johndoe     |
| Database       | ⚠️ Da Aggiornare   | @janedoe     |
| API            | 🚧 In Corso        | @bobsmith    |
| UI             | ✅ Stabile         | @alicesmith  |
ComponenteStatoManutentore
Autenticazione✅ Stabile@johndoe
Database⚠️ Da Aggiornare@janedoe
API🚧 In Corso@bobsmith
UI✅ Stabile@alicesmith

3. Blocchi di Codice negli Elenchi ​

Includi blocchi di codice negli elenchi:

markdown
1. Installa le dipendenze:

   ```bash
   npm install
  1. Esegui il server di sviluppo:

    bash
    npm run dev
  2. Build per produzione:

    bash
    npm run build

### 4. Blocchi di Citazione con Codice

Combina citazioni con blocchi di codice:

```markdown
> **Suggerimento Pro:** Usa il seguente comando per controllare rapidamente lo stato di Git:
>
> ```bash
> git status
> ```

Suggerimento Pro: Usa il seguente comando per controllare rapidamente lo stato di Git:

bash
git status

GFM in Diversi Contesti GitHub ​

File README ​

I file README supportano tutte le funzionalità GFM e vengono renderizzati automaticamente sulle pagine del repository.

Issue e Pull Request ​

  • Usa elenchi di attività per tracciare i progressi
  • Menziona i membri del team per la collaborazione
  • Includi snippet di codice con evidenziazione della sintassi
  • Riferisciti a issue/PR correlate usando la sintassi #123

Commenti ​

  • Usa emoji per reazioni rapide
  • Riferisciti a righe nel codice con commenti alle righe
  • Usa blocchi di citazione per rispondere a punti specifici

Wiki ​

  • Organizza il contenuto con pagine annidate
  • Usa tabelle per dati strutturati
  • Includi esempi di codice con evidenziazione della sintassi

Migliori Pratiche ​

1. Stile del Codice ​

markdown
<!-- ✅ Buono -->
```javascript
// Usa nomi di funzione descrittivi
function calculateTotal(items) {
  return items.reduce((sum, item) => sum + item.price, 0);
}
javascript
function f(i){return i.reduce((a,b)=>a+b.p,0)}```

2. Design delle Tabelle ​

markdown
<!-- ✅ Buono -->
| Funzionalità | Descrizione | Stato |
|--------------|-------------|-------|
| Funzionalità 1 | Breve descrizione | ✅ |
| Funzionalità 2 | Altra descrizione | 🚧 |

<!-- ❌ Da Evitare -->
| Funzionalità | Descrizione | Stato | | | |
|--------------|-------------|-------|---|---|---|
| Funzionalità 1 | Questa descrizione è troppo lunga e rende la tabella difficile da leggere sui dispositivi mobili | ✅ | | | |

3. Uso degli Elenchi di Attività ​

markdown
<!-- ✅ Buono -->
## Sprint Backlog
- [x] Completare la pagina del profilo utente
- [ ] Implementare la funzionalità di ricerca
  - [x] API Backend
  - [ ] Componente Frontend
- [ ] Scrivere documentazione

<!-- ❌ Da Evitare -->
- [ ] Attività 1
- [ ] Attività 2
- [ ] Attività 3
- [ ] Attività 4
- [ ] Attività 5
(Troppe attività senza organizzazione)

GFM vs Markdown Standard ​

FunzionalitàMarkdown StandardGitHub Flavored Markdown
Blocchi di Codice Delimitati❌✅
Evidenziazione della Sintassi❌✅
Elenchi di Attività❌✅
Tabelle❌✅
Barrato❌✅
Emoji❌✅
Menzioni❌✅
Collegamento AutomaticoLimitatoEstensivo

Strumenti per Lavorare con GFM ​

Editor Locali ​

  • Visual Studio Code - Anteprima GFM ed estensioni
  • Typora - Rendering GFM in tempo reale
  • Mark Text - Supporto GFM

Strumenti Online ​

  • GitHub Gist - Crea e condividi snippet GFM
  • Dillinger - Editor GFM online
  • StackEdit - Supporto GFM con sincronizzazione cloud

Strumenti da Riga di Comando ​

  • glow - Renderer GFM per terminale
  • pandoc - Converti GFM in altri formati
  • marked - Parser GFM per Node.js

Problemi Comuni e Soluzioni ​

1. Blocco di Codice Non Evidenziato ​

Problema: Il blocco di codice non mostra l'evidenziazione della sintassi

Soluzione: Assicurati di specificare il linguaggio corretto:

markdown
<!-- ✅ Corretto -->
```javascript
console.log("Hello");
jsx
console.log("Hello"); // Usando jsx invece di javascript per codice non-JSX

### 2. Caselle di Controllo degli Elenchi di Attività Non Funzionanti

**Problema:** Le caselle di controllo degli elenchi di attività non sono interattive

**Soluzione:** Assicurati di usare la sintassi corretta (spazio tra `-` e `[ ]`):

```markdown
<!-- ✅ Corretto -->
- [ ] Attività

<!-- ❌ Errato -->
-[ ] Attività (nessuno spazio)
-[x] Attività (nessuno spazio)

3. Tabella Non Renderizzata Correttamente ​

Problema: Le colonne della tabella sono disallineate

Soluzione: Assicurati che le barre verticali siano allineate correttamente:

markdown
<!-- ✅ Corretto -->
| Column 1 | Column 2 |
|----------|----------|
| Data 1   | Data 2   |

<!-- ❌ Errato -->
|Column 1|Column 2|
|--|--|
|Data 1|Data 2|

Prossimi Passaggi ​


GitHub Flavored Markdown è uno strumento potente per la comunicazione e la collaborazione nello sviluppo software. Padroneggiando queste funzionalità, puoi creare documentazione più efficace, tracciare meglio le issue e collaborare in modo più efficiente con il tuo team.

Built by www.markdownlang.com