Skip to content

GitHub Flavored Markdown (GFM)

GitHub Flavored Markdown (GFM) é a versão aprimorada do Markdown do GitHub com recursos adicionais projetados especificamente para desenvolvimento de software e colaboração. Este guia cobre todas as extensões de sintaxe especiais disponíveis no GitHub.

O que é GitHub Flavored Markdown (GFM)?

GitHub Flavored Markdown estende a sintaxe básica do Markdown com recursos que o tornam mais útil para:

  • Documentação (READMEs, wikis)
  • Rastreamento de issues
  • Pull requests
  • Revisão de código
  • Gerenciamento de projetos

Principais Recursos do GFM

1. Blocos de Código Delimitados

O GFM suporta blocos de código delimitados com destaque de sintaxe específico do idioma:

```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. Destaque de Sintaxe

O GitHub suporta destaque de sintaxe para centenas de idiomas. Alguns comuns incluem:

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

3. Listas de Tarefas

Crie listas de tarefas interativas com caixas de seleção:

markdown
- [x] Completar autenticação do usuário
- [x] Implementar endpoints da API
- [ ] Escrever testes unitários
  - [ ] Testes de backend
  - [ ] Testes de frontend
- [ ] Implantar em produção
  • [x] Completar autenticação do usuário
  • [x] Implementar endpoints da API
  • [ ] Escrever testes unitários
    • [ ] Testes de backend
    • [ ] Testes de frontend
  • [ ] Implantar em produção

4. Tabelas

O GFM fornece uma sintaxe simples para criar tabelas:

markdown
| Recurso           | Suportado | Descrição                        |
|-------------------|-----------|----------------------------------|
| Fenced Code       | ✅        | Destaque específico do idioma    |
| Task Lists        | ✅        | Caixas de seleção interativas    |
| Tables            | ✅        | Exibição de dados estruturados   |
| Mentions          | ✅        | Notificações de usuário e equipe |
| Emoji             | ✅        | Expressões visuais               |
RecursoSuportadoDescrição
Fenced CodeDestaque específico do idioma
Task ListsCaixas de seleção interativas
TablesExibição de dados estruturados
MentionsNotificações de usuário e equipe
EmojiExpressões visuais

5. Menções

Mencione usuários ou equipes para notificá-los:

markdown
@username - Mencionar um usuário específico
@team-name - Mencionar uma equipe

6. Emoji

Adicione emoji usando shortcodes:

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

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

O GFM vincula automaticamente certos tipos de conteúdo:

Números de Issue e Pull Request

markdown
#123 - Links para issue 123
PR #456 - Links para pull request 456

Hashes SHA

markdown
a1b2c3d - Links para o commit com este SHA

Menções de Usuário em Issues/PRs

markdown
@username - Links automaticamente para o perfil do usuário

URLs

markdown
https://github.com - Automaticamente se torna um link

8. Tachado

O GFM suporta texto tachado:

markdown
~~Este texto está tachado~~

Este texto está tachado

O GFM cria links automaticamente para:

  • URLs HTTP/HTTPS
  • Endereços de e-mail
  • Números de issue/PR do GitHub
  • SHAs de commit
markdown
https://github.com/markdownlang/markdownlang.com
user@example.com
#123
PR #456
a1b2c3d4e5f6

10. Destaque de Linha em Blocos de Código

Destaque linhas específicas em blocos de código:

```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. Destaque de Sintaxe Diff

Destaque alterações no código com sintaxe diff:

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

12. Marcação Específica do GitHub

Alertas

Use sintaxe especial para alertas na documentação do GitHub:

markdown
> [!NOTE]
> Este é um alerta de nota.

> [!TIP]
> Este é um alerta de dica.

> [!IMPORTANT]
> Este é um alerta importante.

> [!WARNING]
> Este é um alerta de aviso.

> [!CAUTION]
> Este é um alerta de cautela.

NOTE

Este é um alerta de nota.

TIP

Este é um alerta de dica.

IMPORTANT

Este é um alerta importante.

WARNING

Este é um alerta de aviso.

CAUTION

Este é um alerta de cautela.

Use links relativos para navegar entre arquivos no mesmo repositório:

markdown
[README](/README.md)
[Diretrizes de Contribuição](/CONTRIBUTING.md)
[Documentação da API](/docs/api.md)
markdown
![GitHub Logo](/images/github-logo.png "GitHub Logo - Texto de Passagem do Mouse")

Uso Avançado do GFM

1. Listas Aninhadas com Listas de Tarefas

Combine listas aninhadas com listas de tarefas:

markdown
## Roadmap do Projeto

### Fase 1: Planejamento
- [x] Definir escopo do projeto
- [x] Identificar requisitos
  - [x] Requisitos funcionais
  - [x] Requisitos não funcionais
- [x] Criar cronograma

### Fase 2: Desenvolvimento
- [x] Configurar estrutura do projeto
- [ ] Implementar recursos principais
  - [x] Autenticação
  - [ ] Dashboard
  - [ ] Integração de API

Aprimore tabelas com emoji e links:

markdown
| Componente     | Status              | Mantenedor   |
|----------------|---------------------|--------------|
| Autenticação   | ✅ Estável          | @johndoe     |
| Banco de Dados | ⚠️ Precisa Atualizar | @janedoe     |
| API            | 🚧 Em Andamento     | @bobsmith    |
| UI             | ✅ Estável          | @alicesmith  |
ComponenteStatusMantenedor
Autenticação✅ Estável@johndoe
Banco de Dados⚠️ Precisa Atualizar@janedoe
API🚧 Em Andamento@bobsmith
UI✅ Estável@alicesmith

3. Blocos de Código em Listas

Inclua blocos de código em listas:

markdown
1. Instale as dependências:

   ```bash
   npm install
  1. Execute o servidor de desenvolvimento:

    bash
    npm run dev
  2. Build para produção:

    bash
    npm run build

### 4. Blocos de Citação com Código

Combine citações com blocos de código:

```markdown
> **Dica Profissional:** Use o seguinte comando para verificar rapidamente o status do Git:
>
> ```bash
> git status
> ```

Dica Profissional: Use o seguinte comando para verificar rapidamente o status do Git:

bash
git status

GFM em Diferentes Contextos do GitHub

Arquivos README

Arquivos README suportam todos os recursos do GFM e são renderizados automaticamente nas páginas do repositório.

Issues e Pull Requests

  • Use listas de tarefas para rastrear progresso
  • Mencione membros da equipe para colaboração
  • Inclua trechos de código com destaque de sintaxe
  • Referencie issues/PRs relacionados usando a sintaxe #123

Comentários

  • Use emoji para reações rápidas
  • Referencie linhas no código com comentários de linha
  • Use blocos de citação para responder a pontos específicos

Wikis

  • Organize conteúdo com páginas aninhadas
  • Use tabelas para dados estruturados
  • Inclua exemplos de código com destaque de sintaxe

Melhores Práticas

1. Estilo de Código

markdown
<!-- ✅ Bom -->
```javascript
// Use nomes de função descritivos
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 de Tabela

markdown
<!-- ✅ Bom -->
| Recurso | Descrição | Status |
|---------|-----------|--------|
| Recurso 1 | Breve descrição | ✅ |
| Recurso 2 | Outra descrição | 🚧 |

<!-- ❌ Evite -->
| Recurso | Descrição | Status | | | |
|---------|-----------|--------|---|---|---|
| Recurso 1 | Esta descrição é muito longa e torna a tabela difícil de ler em dispositivos móveis | ✅ | | | |

3. Uso de Lista de Tarefas

markdown
<!-- ✅ Bom -->
## Sprint Backlog
- [x] Completar página de perfil do usuário
- [ ] Implementar funcionalidade de busca
  - [x] API de Backend
  - [ ] Componente de Frontend
- [ ] Escrever documentação

<!-- ❌ Evite -->
- [ ] Tarefa 1
- [ ] Tarefa 2
- [ ] Tarefa 3
- [ ] Tarefa 4
- [ ] Tarefa 5
(Muitas tarefas sem organização)

GFM vs Markdown Padrão

RecursoMarkdown PadrãoGitHub Flavored Markdown
Blocos de Código Delimitados
Destaque de Sintaxe
Listas de Tarefas
Tabelas
Tachado
Emoji
Menções
Link AutomáticoLimitadoExtensivo

Ferramentas para Trabalhar com GFM

Editores Locais

  • Visual Studio Code - Visualização GFM e extensões
  • Typora - Renderização GFM em tempo real
  • Mark Text - Suporte GFM

Ferramentas Online

  • GitHub Gist - Crie e compartilhe trechos GFM
  • Dillinger - Editor GFM online
  • StackEdit - Suporte GFM com sincronização em nuvem

Ferramentas de Linha de Comando

  • glow - Renderizador GFM de terminal
  • pandoc - Converta GFM para outros formatos
  • marked - Parser GFM para Node.js

Problemas Comuns e Correções

1. Bloco de Código Não Está Destacando

Problema: O bloco de código não está mostrando destaque de sintaxe

Correção: Certifique-se de especificar o idioma correto:

markdown
<!-- ✅ Correto -->
```javascript
console.log("Hello");
jsx
console.log("Hello"); // Usando jsx em vez de javascript para código não-JSX

### 2. Caixas de Seleção de Lista de Tarefas Não Funcionam

**Problema:** As caixas de seleção de lista de tarefas não são interativas

**Correção:** Certifique-se de usar a sintaxe correta (espaço entre `-` e `[ ]`):

```markdown
<!-- ✅ Correto -->
- [ ] Tarefa

<!-- ❌ Incorreto -->
-[ ] Tarefa (sem espaço)
-[x] Tarefa (sem espaço)

3. Tabela Não Está Sendo Renderizada Corretamente

Problema: As colunas da tabela estão desalinhadas

Correção: Certifique-se de que os pipes estão alinhados corretamente:

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

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

Próximos Passos


GitHub Flavored Markdown é uma ferramenta poderosa para comunicação e colaboração no desenvolvimento de software. Ao dominar esses recursos, você pode criar documentação mais eficaz, rastrear melhor as issues e colaborar de forma mais eficiente com sua equipe.

Construído por www.markdownlang.com