Este tutorial de uso do Git/GitHub no Visual Studio Code (VS-Code) tem como objetivo fornecer orientações práticas para usuários iniciantes e intermediários sobre como usar o Git e o GitHub diretamente na interface do VS Code e na página do GitHub a fim de realizar controle de versão de códigos de projetos de programação. Utilizaremos principalmente o terminal do Git Bash no VS-Code.
-
Crie uma conta gratuita no GitHub em: https://github.com/
-
Baixe e instale o Git a partir do link: https://git-scm.com/downloads
-
Ao fim da instalação do Git, abra e feche o Git Bash.
-
Faça o teste para verificar se o Git foi instalado corretamente. Digite em um terminal:
git --version
Se tudo estiver funcionando, deve aparecer a versão do Git instalada no seu sistema operacional.
-
Abra o terminal no VS Code e configure o nome e e-mail do Github para seus commits:
git config --global user.name "Seu Nome"
git config --global user.email "[email protected]"
Para configurar a comunicação segura entre seu repositório local e o GitHub, você deve gerar e adicionar uma chave SSH:
-
Gerar uma Chave SSH (caso ainda não tenha uma):
Abra o Git Bash e digite o seguinte comando para gerar uma chave SSH:
ssh-keygen -t ed25519 -C "[email protected]"
-
Pressione
Enter
para salvar a chave no local padrão (~/.ssh/id_ed25519
). -
Defina uma senha para proteger a chave, se desejar.
-
-
Adicionar a Chave SSH ao SSH Agent:
Primeiro, inicie o agente SSH:
eval "$(ssh-agent -s)"
Depois, adicione a chave:
ssh-add ~/.ssh/id_ed25519
-
Copiar a Chave SSH a ser adicionada no GitHub:
Para copiar a chave pública (que deve ser adicionada ao GitHub):
cat ~/.ssh/id_ed25519.pub | clip # Sua chave é copiada para o clipboard
-
Adicionar a chave SSH ao GitHub:
-
Vá até as configurações da sua conta no GitHub (Configurações SSH no GitHub).
-
Clique em New SSH key.
-
Cole a chave copiada no campo e dê um nome para identificá-la, como “Meu notebook” ou “Desktop pessoal”.
-
Salve a chave.
-
-
Testar a conexão com o GitHub:
ssh -T [email protected]
Se configurado corretamente, você verá uma mensagem de boas-vindas do GitHub
-
Caso seu sistema não suporte ed25519, use o algoritmo rsa:
eval "$(ssh-agent -s)"
ssh-keygen -t rsa -b 4096 -C "[email protected]"
cat ~/.ssh/id_rsa.pub
-
O conteúdo da chave pública começará com
ssh-rsa
e será uma linha longa de texto. Copie todo o conteúdo. -
Repita as etapas 4 e 5 acima para finalizar a configuração por esse outro algoritmo.
-
Vamos criar nosso primeiro repositório para uso pessoal e, também, verificar se as conexões entre o VS-Code e Github via Git estão funcionando corretamente.
A maneira mais eficiente de criar um novo repositório é diretamente pelo site do GitHub, pois isso garante que todas as configurações sejam corretamente definidas desde o início.
-
Acesse sua conta no GitHub, acesse a guia Repositories e clique no botão verde
New
no canto superior direito da página para criar um novo repositório. -
Defina o nome do repositório, adicione uma descrição (opcional), e escolha se deseja que o repositório seja público ou privado.
-
Marque a opção “Add a README file” para inicializar o repositório com um arquivo
README.md
, que você pode editar posteriormente. -
Preencha as informações conforme figura abaixo e clique no botão
Create repository
para finalizar a criação.
Depois de criar o repositório no GitHub, o próximo passo é clonar o repositório para sua máquina local, criando uma cópia que você poderá modificar posteriormente no VS-Code. Além disso, esta etapa verifica se a comunicação via Git está funcionando.
-
No GitHub, acesse a página do repositório recém-criado e clique no botão verde
<>Code
, conforme figura abaixo. Em seguida, copie a URL fornecida para clonar o repositório (por exemplo, algo comohttps://github.com/seu-usuario/seu-repositorio.git
). -
No Git Bash, navegue até o diretório onde deseja clonar seus repositórios e digite o seguinte comando:
git clone https://github.com/seu-usuario/seu-repositorio.git
Ao executar este comando, será criada uma cópia local do repositório em seu computador, permitindo que você faça edições e atualizações quando necessário. Durante o processo de clonagem, o Git automaticamente configura uma conexão remota chamada
origin
, que aponta para a URL do repositório original em sua conta. Desde que você seja o proprietário do repositório, esta configuração automática elimina a necessidade de executar manualmente o comandogit remote add
para conectá-lo remotamente ao respositório original no Github. Veja na seção 3 como clonar repositórios de terceiros.
-
Abra o VS-Code a partir do seu terminal (Pode ser o Git Bash), estando dentro da pasta do projeto clonado:
cd seu-repositorio/ code .
Agora que o repositório foi colando no seu computador, você pode realizar pequenas alterações para testar o controle de versão com Git e GitHub. Estes procedimentos são aplicáveis quando apenas você interage com o seu próprio repositório.
No VS Code, crie uma nova pasta e adicione um novo arquivo dentro dessa
pasta (por exemplo, uma pasta chamada teste
e um arquivo chamado
teste.py
).
-
Adicionar as alterações ao staging area:
git add .
-
Criar um commit com uma mensagem explicativa:
git commit -m "Criação de pasta e arquivo de teste"
-
Enviar as alterações para o repositório remoto (GitHub):
git push origin main
Estas instruções cobrem o fluxo básico para adicionar, comitar e enviar alterações iniciais para o GitHub usando o Git no terminal do VS Code.
-
Acesse seu repositório no GitHub: Abra o navegador e vá para a página do seu repositório no GitHub.
-
Edite o arquivo
README.md
: Dentro do repositório, clique no arquivoREADME.md
para abri-lo e selecione a opção Edit (ícone de lápis) para editar o conteúdo do arquivo diretamente na interface do GitHub. -
Faça uma alteração simples: Realize uma modificação no arquivo, como adicionar uma linha de texto para testes, por exemplo:
"Alteração de teste realizada no GitHub"
. -
Salve a alteração: Após realizar a modificação, role para baixo e clique em Commit changes. Você pode adicionar uma mensagem de commit para descrever a alteração (ex.:
"Teste de edição via GitHub"
). Em seguida, clique em Commit changes para salvar a atualização. -
Baixe as alterações para o VS Code: Agora que a alteração foi realizada no GitHub, é necessário atualizar o repositório local no VS Code para sincronizar com a versão online.
-
No VS Code, abra o terminal e execute o comando:
git pull origin main
-
Esse comando busca as últimas alterações da branch
main
do GitHub e as aplica no repositório local, garantindo que oREADME.md
atualizado seja baixado.
-
-
Confirme a atualização local: Após o comando
git pull
, verifique se as alterações noREADME.md
foram aplicadas corretamente no VS Code. Abra o arquivoREADME.md
no VS Code e confira se a nova linha adicionada aparece.
Nem todos os arquivos e pastas precisam ser compartilhados no
repositório. Para evitar que certos arquivos sejam versionados, você
pode listá-los no arquivo .gitignore
, garantindo que apenas os
arquivos relevantes sejam rastreados pelo Git.
-
Abra ou crie o arquivo
.gitignore
: No VS-Code, navegue até a raiz do projeto e verifique se o arquivo.gitignore
existe. Caso contrário, crie um novo arquivo com esse nome (.gitignore
) na raiz. -
Adicione os arquivos e pastas a serem ignorados: No arquivo
.gitignore
, liste os padrões de nomes de arquivos e pastas que você deseja excluir do versionamento. Por exemplo:# Ignorar arquivos temporários do R *.Rhistory *.Rdata # Ignorar diretórios específicos /data /output
Cada linha representa um padrão a ser ignorado pelo Git. Prefixe com
/
para excluir um diretório inteiro. -
Salve e faça um commit das alterações: Salve o arquivo
.gitignore
e, em seguida, faça o commit e o push das alterações para o GitHub:git add .gitignore git commit -m "Adiciona configurações de arquivos e pastas a serem ignorados" git push origin main
-
Verifique se o
.gitignore
está funcionando: Para garantir que os arquivos listados estejam de fato sendo ignorados, tente adicionar algum arquivo incluído no.gitignore
e verifique se ele não aparece como uma mudança rastreável. Isso confirma que o Git está seguindo as regras configuradas no.gitignore
.
Embora seja mais eficiente criar o repositório diretamente no GitHub e depois cloná-lo para o computador, também é possível iniciar um repositório localmente e vinculá-lo ao GitHub. Esse fluxo cria o projeto no caminho especificado em seu computador, configura o Git local e, posteriormente, sincroniza o projeto com o GitHub.
-
Crie uma pasta para o projeto: No local desejado em seu computador, crie uma pasta para o projeto ou navegue até a pasta já existente. Você pode também criar a pasta do projeto no computador e abrir o VS-Code nesta pasta.
mkdir nome_do_projeto cd nome_do_projeto code . # Abre o VS-Code na pasta do repo
-
Inicie o repositório Git local: Dentro da pasta do projeto, crie alguns arquivos com o VS-Code e depois inicialize um novo repositório Git.
git init
-
Adicione arquivos e faça um commit inicial: Adicione os arquivos do projeto ao Git e crie o primeiro commit. O comando
commit
cria uma nova versão do projeto.git add .
git commit -m "Commit inicial"
git log # Verificar histórico dos commits feitos
git log --all
O comando
git log --all
é usado para mostrar todos os commits que temos, quando fazemos o comandogit checkout hash-do-commit
. -
Crie um repositório vazio no GitHub: Acesse o GitHub, vá para a aba de criação de repositórios e crie um novo repositório vazio com o mesmo nome do projeto. Não adicione nenhum arquivo ao repositório no GitHub (como README.md ou .gitignore), pois o repositório deve estar vazio para evitar conflitos.
-
Vincule o repositório local ao GitHub: No terminal, adicione o repositório GitHub como um repositório remoto, substituindo
seu-usuario
enome_do_repositorio
pelos nomes correspondentes.git remote add origin https://github.com/seu-usuario/nome_repositorio.git
git branch -M main # Renomeia master para main
-
Envie o commit inicial para o GitHub: Envie o conteúdo do repositório local para o GitHub.
git push -u origin main
O parâmetro
-u
configura a branchmain
local para acompanhar automaticamente a branchmain
do GitHub, facilitando futuros comandosgit push
.Agora, seu repositório está vinculado ao GitHub e sincronizado. A partir daqui, você pode continuar fazendo commits e enviando as alterações para o repositório remoto.
Se você já possui um projeto no seu computador e deseja vinculá-lo ao Git e ao GitHub, pode fazer isso sem precisar criar um novo projeto do zero. Siga os passos abaixo para configurar o controle de versão e sincronizar o projeto com o GitHub.
-
Abra o projeto no VS Code: Navegue até o diretório do seu projeto e abra-o no VS Code. Você pode usar o comando abaixo no terminal para abrir o VS Code diretamente na pasta do projeto:
code .
-
Inicialize o Git no projeto: No terminal do VS Code, inicialize o repositório Git no diretório do projeto para começar a rastrear as alterações.
git init
-
Adicione os arquivos ao controle de versão: Adicione todos os arquivos do projeto ao Git para prepará-los para o commit.
git add .
-
Faça o commit inicial: Crie o commit inicial com uma mensagem que descreva a adição do projeto ao Git.
git commit -m "Commit inicial do projeto existente"
-
Crie um repositório no GitHub: Acesse o GitHub e crie um repositório vazio com o mesmo nome do projeto. Não adicione nenhum arquivo ao repositório no GitHub, pois ele deve estar vazio para evitar conflitos com o projeto local.
-
Conecte o repositório local ao GitHub: No terminal do VS Code, adicione o repositório do GitHub como um remoto chamado
origin
. Substituaseu-usuario
enome_do_repositorio
pelos valores corretos.git remote add origin https://github.com/seu-usuario/nome_repositorio.git
-
Envie o projeto para o GitHub: Envie o commit inicial do repositório local para o GitHub.
git push -u origin main
O parâmetro
-u
estabelece um vínculo entre a branchmain
local e a branchmain
no GitHub, facilitando futuros comandos degit push
.
Esses passos conectam seu projeto local ao Git e sincronizam-no com o GitHub, criando um repositório remoto pareado com o repositório local. A partir de agora, você pode continuar a usar o Git para controlar as versões e o GitHub para fazer backup e colaborar no projeto.
Ao colaborar em projetos no GitHub e em equipe, você pode precisar clonar ou bifurcar (fazer um fork) um repositório. Bifurcar cria uma cópia do repositório em sua própria conta GitHub, permitindo trabalhar em uma versão independente, mas ainda conectada ao repositório original para facilitar contribuições futuras.
-
Faça o Fork do Repositório: No GitHub, acesse o repositório do mantenedor a partir do qual deseja bifurcar e clique no botão Fork no canto superior direito e depois em
+ Create a new fork
. Isso cria uma cópia do repositório em sua conta GitHub. -
Clone o Repositório Forkado: Após ter feito o fork, você pode clicar na seta ao lado do botão
<>Code
para poder copiar o link HTTPS ou SSH para poder clonar o repositório. -
Abra o VS Code e Clone o Repositório: No VS Code (ou no git bash), abra o terminal e clone o repositório usando o link copiado a partir de sua conta no Github:
git clone https://github.com/seu-usuario/nome-repositorio.git>
Esse comando cria uma cópia local do repositório forkado. Substitua
<URL_do_repositorio_forkado>
pelo link HTTPS ou SSH. -
Navegue até a pasta do repositório clonado:
cd nome_do_repositorio
Através do Git Bash:
-
Você pode também o processo acima dentro de uma pasta de repositórios, abrir o git bash, clonar o repo, ir para basta e depois abrir o VS-Code a partir dessa pasta. Use a sequência de colandos abaixo:
git clone <URL_do_repositorio_forkado> cd nome_do_repositorio code .
Para manter seu fork sincronizado com o repositório original, adicione o
repositório original como um remoto adicional chamado upstream
:
-
Adicione o repositório original como
upstream
: sicronize o repositório remoto upstream usando o link copiado a partir da conta do proprietário original no Githubgit remote add upstream https://github.com/usuario-original/nome-repositorio.git
-
Verifique os repositórios local e remoto conectados
git remote -v
Quando desejar incorporar atualizações do repositório original
(upstream
) ao seu fork local
e origin
no Github, basta seguir
estas etapas:
-
Buscar atualizações do repositório original:
git checkout main # Mude primeiro para a main git fetch upstream # Busca atualizações
-
Mesclar as atualizações:
git merge upstream/main # Mescala atualizações à branch local atual (main)
O comando
git merge
deve ser executado na sua branchmain local
. A branchmain
doupstream
(ou seja, o repositório original) é mesclada na sua branchmain
local. -
Enviar as atualizações para a sua cópia do repositório no Github
git push origin main
Isso é necessário para enviar as atualizações mescladas do seu repositório local para o repositório do fork no GitHub (ou seja, seu
origin
). Assim, seu repositório remoto no GitHub também ficará sincronizado com o repositório original (upstream), refletindo as mudanças mais recentes.
git push origin main
é usado para enviar essas atualizações mescladas do seu repositório local para o seu repositório no GitHub (origin
), garantindo que o seu fork também esteja atualizado com o repositório original.Isso sincroniza seu fork com as mudanças mais recentes do repositório original, mantendo seu projeto atualizado para futuras contribuições.
Sempre que for colaborar, crie uma branch nova para trabalhar de forma eficiente. Depois faça seus commits e pushes. Na seção 4.2, há uma descrição mais detalhada desse processo de colaboração. A título de exemplo, seguem os comandos para se colaborar:
git checkout -b nome-branch # Crie a branch e comece a fazer alterações
git status
git add .
git status
git commit -m "Descreva as alaterações"
git push origin nome-branch
- origin:
-
É o nome padrão dado ao repositório remoto quando você clona ou bifurca (fork) um projeto.
-
Refere-se ao link do seu próprio repositório no GitHub, ou seja, o fork que está sob a sua conta de usuário.
-
Quando você executa
git push origin main
, está enviando as atualizações para o seu repositório no GitHub (o fork).
-
- upstream:
-
É o nome que se usa para o repositório remoto original, ou seja, o repositório principal do projeto de onde você fez o fork.
-
Configurar o
upstream
permite que você busque as atualizações mais recentes do repositório original sem afetar as suas próprias modificações no fork. -
Você utiliza comandos como
git fetch upstream
egit merge upstream/main
para trazer as mudanças mais recentes do repositório original, mantendo seu fork atualizado.
-
- main:
-
É o nome padrão da principal branch de desenvolvimento na maioria dos repositórios Git (anteriormente chamada de
master
). -
Geralmente, a branch
main
contém o código mais estável e atualizado do projeto. -
Ao mesclar (
merge
) a branchmain
doupstream
ao seu repositório local, você garante que a main do seu fork local esteja em sincronia com o código estável do projeto.
-
- Repositório local: A cópia completa do repositório no seu computador, onde você faz todas as edições e testes.
- Repositório remoto: A versão do repositório hospedada em um servidor, como o GitHub, que pode ser acessada e compartilhada com outros colaboradores.
Após ter criado uma cópia de seus repositório no seu computador e
sabendo que o mesmo poderá ser em bifurcação (fork) com outros
colaboradores, você como proprietário (mantenedor) pode querer aprimorar
ainda mais seus códigos dentro do projeto de análise. Siga os passos
abaixo para inserir suas alterações em arquivos editáveis como .html
,
.css
, .htm
, .py
, .R
, .Rmd
, .qmd
, .csv
, .xlsx
, etc, ou
para adicionar arquivos não editáveis às pastas do projeto.
Nota: Essas etapas são válidas quando você é o proprietário do repositório original. Usaremos apenas o terminal Git-bash do VS-Code para trabalhar de maneira eficiente com o Git. Clique neste link para ver instrução de como configurar o Gitbash como terminal padrão no VS-Code.
Enquanto mantenedor do repositório, você não precisa fazer configuração
inicial de upstream com o comando git remote add upstream url-repo
.
Isso será necessário quando você for um colaborador de um projeto em
fork, conforme explicado na Seção 3
.
-
Mude para a branch
main
local:git checkout main
-
Use os comandos
git fetch origin
ougit pull origin main
para obter as últimas alterações do repositório remoto (origin
) que está no GitHub. Porém, as duas funcionam de forma diferente.-
) O comando
git fetch origin
busca as atualizações do repositório remoto, mas não as aplica automaticamente ao seu branch local. É útil se você deseja revisar as mudanças antes de aplicá-las. Depois teria que fazergit merge origin/main
. Caso você deseje usar esse procedimento de revisar e mesclar, segue abaixo a sequência completa de comandos:git fetch origin # Busca as atualizações do repositório remoto sem aplicá-las git diff main origin/main # Mostra as diferenças entre sua branch local e a versão no remoto git merge origin/main # Mescla as atualizações do remoto na sua branch local git log --oneline # Visualiza o histórico de commits para confirmar as mudanças
- Já o comando mais usado é o
git pull origin main
, o qual busca as atualizações e já as mescla com a sua branch local. Aqui,main
é o nome do branch principal. Caso você utilize outro branch principal (comomaster
), substituamain
pormaster
.
git pull origin main
Esta opção com
git pull
será a preferida e mais usada, principalmente quando você já sabe que os códigos são provenientes de fontes confiáveis. -
-
Crie e mude para uma nova branch para trabalhar em uma nova funcionalidade:
git checkout -b nome-branch
-
Para listar as branches locais e verificar em qual delas você está trabalhando, utilize:
git branch
-
Modifique múltiplos arquivos em diferentes pastas, conforme necessário.
-
Crie novos arquivos ou exclua arquivos que não são mais necessários.
-
Mantenha as alterações focadas na funcionalidade/correção em que está trabalhando.
-
Realize commits frequentes para não perder o trabalho.
Como exercício, faça modificações no arquivo de código
Python
chamadoscript.py
ou insira uma linha de texto no arquivotextos.txt
.
-
Após realizar as modificações, verifique quais arquivos foram modificados
git status
-
Verifique as alterações específicas em cada arquivo:
git diff nome-darquivo
-
Adicione alterações ao stage:
-
Específico:
git add nome-arquivo
-
Todos os arquivos:
git add .
-
-
Salve as alterações em um commit
git commit -m "Descrição das alterações"
-
Caso precise modificar o último commit (antes do push)
git commit --amend -m "Nova mensagem de commit"
-
Busque as últimas alterações do repositório original
git fetch origin
-
Reaplique seus commits sobre a versão mais atual do origin
git rebase origin/main
-
Envie sua branch atualizada para seu repositório
origin
.git push origin nome-branch
Após enviar suas alterações para seu repositório, você precisa criar um Pull Request (PR) para que suas mudanças sejam incorporadas ao repositório original.
-
Acesse a página do seu fork no GitHub e crie um
Pull Request
:-
Clique no botão
Compare & Create Pull request
e depois emCrea pull request
. -
Inclua um título claro, uma descrição detalhada das alterações, referência a issues relacionadas (se houver), e evidências de testes, prints ou GIFs (se aplicável).
-
-
Após criar o PR:
-
Como as modificações foram feitas por você mesmo, voê já pode mesclar e finalizar as alterações.
-
Se precisar responder a comentários de outros mantenedores do projeto e, neste caso, necessitar fazer ajustes, faça as alterações (sem precisar criar nova branch) e os novos commits serão automaticamente incluídos no PR:
git add . git commit -m "Ajustes conforme revisão do PR" git push origin nome-branch
-
-
Aguarde a revisão e aprovação:
-
Esteja disponível para discutir as alterações.
-
O(s) mantenedor(es) pode(m) solicitar modificações antes do merge.
-
-
O mantenedor ou proprietário do projeto aprova as alterações e faz o
Merge
- Clique em
Merge pull request
e depois emConfirm merge
- Clique em
Após o aviso de aprovação das alterações e realização do merge, você deve atualizar as alterações na sua main do computador e apagar a branch criada, se necessário.
-
Retorne para a branch
main
git checkout main
-
Atualize sua
main
local com as mudanças doorigin
git pull origin main
-
Remova a branch de feature localmente
git branch -d nome-branch
-
Remova a branch de feature do seu repositório remoto
git push origin --delete nome-branch
Caso você não seja o mantenedor do repositório, será necessário criar um
Pull Request
(PR) para solicitar a inclusão das suas alterações na
branch principal (geralmente chamada de main
ou master
). Siga os
passos abaixo para colaborar corretamente num projeto utilizando os
comando do Git:
Se você ainda não fez a configuração inicial do upstream do respositório clonado em seu computador (reveja subtópico 3. Clonando e Bifurcando um Repositório (Fork)), será necessário fazê-lo para conectar seu repositório local ao repositório original (upstream), conforme abaixo :
git remote add upstream https://github.com/dono-original/nome-repositorio.git
Antes de iniciar o trabalho, garanta que a branch main
do seu
repositório local esteja atualizada com a versão mais recente do
repositório remoto.
-
Mude para a branch main:
git checkout main
-
Busque atualizações do repositório original:
git fetch upstream
-
Integre mudanças do
upstream/main
em suamain
localgit merge upstream/main
-
Atualize seu fork no GitHub
git push origin main
-
Crie e mude para uma nova branch de funcionalidade ou de correções:
git checkout -b nome-branch
- Se já tiver a branch e ela foi criada anteriormente, faça um merge
ou rebase para incorporá-la à versão atual:
-
Merge:
git checkout nome-branch git merge main
-
Rebase:
git checkout nome-branch git rebase main
-
Nota: O
merge
cria um novo commit de mesclagem, enquanto orebase
reaplica seus commits sobre as mudanças damain
. Use o método que preferir, levando em consideração o fluxo de trabalho da equipe.
Nesta etapa, faça as alterações necessárias no projeto, como modificar arquivos, adicionar novos arquivos ou pastas:
- Modifique múltiplos arquivos em diferentes pastas.
- Crie novos arquivos conforme necessário.
- Exclua arquivos que não são mais necessários.
- Mantenha as alterações focadas na funcionalidade/correção em que está trabalhando.
- Realize commits frequentes para não perder o trabalho.
-
Verifique quais arquivos foram modificados:
git status
-
Verifique as alterações específicas em cada arquivo:
git diff nome-arquivo
-
Adicione as alterações ao stage:
-
Específico:
git add nome-arquivo
-
Todos os arquivos:
git add .
-
-
Salve as alterações em um commit:
git commit -m "Descrição das alterações"
-
Caso precise modificar o último commit (antes do push)
git commit --amend -m "Nova mensagem de commit"
É muito importante fazer esta etapa para ter certeza de que você possui
a versão mais estável e atualizada em sua main
local.
-
Busque as últimas alterações do upstream:
git fetch upstream
-
Reaplique seus commits sobre a versão mais atual do
upstream
:git rebase upstream/main
-
Envie sua branch atualizada para seu fork no github:
git push origin nome-branch
-
Após ter feito o envio das atualizações, vá até a página do seu fork no GitHub e crie um Pull Request:
- Clique no botão
Compare & Pull Request
. Outra forma de abrir a Pull Request seria ir na branch criada e clicar no botãoContribute
e depois em emOpen pull request
; - Somente se necessário, adicione uma descrição mais detalhada explicando a Solicitação de Mudanças, pois a mensagem de commit pode ser insuficiente.
- Clique no botão
-
Clique em “
Create Pull Request
” para submeter a solicitação de alteração e aguarde a mesclagem do mantenedor do repo. -
Após criar o PR:
O proprietário clica na mensagem da commit para ver o que foi alterado no projeto. Surge os arquivos modificados, destacando as linhas mudadas. O proprietário pode tomar três decisões:
-
Aprovar a
Pull Request
. Basta clicar emReview changes
e depois marca a oçãoApprove
e então clica emSubmit review
para encerrar a revisão. Surgirá a janela de mesclar (Merge) a alteração com a main original. Clique emMerge Pull Request
e depois emConfirme merge
. -
Recusar a Pull request e explicar porque recusou a modificação.
-
Ou solicitar modificações. Se o proprietário precisar solicitar modificações, alguns procedimentos específicos deverão ser tomados, conforme se segue:
-
Para o Proprietário do Repositório que solicitas as alterações de código:
-
Revise e comente nas linhas: Depois que acessar a PR, clique no nome do commit e o arquivo modificado será aberto. Observe as linhas a serem mudadas e clique no sinal de mais
+
azul. Escreva um comentário explicando o que precisa ser alterado no código e clique no botão Start Review para iniciar a revisão e fará com que a PR fique pendente (pending). -
Solicite alterações: Para finalizar a solicitação de alterações, clique na seta ao lado do botão
Finish your review
. Uma nova janela se abre e deixe um comentário explicativo, marque a opçãoRequest changes
e clique emSubmit review
. Isso sinalizará ao colaborador que há ajustes a serem feitos antes da aprovação (mensagem de e-mail será enviadada com o comentário da modificação a ser revisada), aparecendo também na sequência da Pull Request um botão de aviso chamadoChanges requested
de cor laranja. Seja acessível para dúvidas: Informe que o colaborador pode comentar no PR caso precise de esclarecimentos.
-
-
Para o Colaborador que fará as modificações solicitadas:
-
Leia os comentários: Revise os comentários e entenda o que precisa de ajustes nos códigos. Neste ponto, o colaborador não precisa mudar nada na Pull Request.
-
Altere o código: Faça as modificações na mesma branch criada antes em seu repositório local e realize todos os testes para ver se a funcionalidade foi alcançada ou o código foi corrigido. Salve os arquivos.
-
Envie as mudanças para o PR: Utilize os códigos abaixo para enviar as mudanças. Observe que será necessário outra commit para salvar as novas modificações.
# Faça as alterações necessárias git add . git commit -m "Ajustes conforme revisão do PR" git push origin nome-branch
-
Comente e finalize: Se precisar de dar mais informações, use os comentários no PR para discutir e esclarecer pontos que você achou pertinente durante as alterações do código.
-
-
Por fim, o proprietário do repositório verifica as correções clicando na nova commit desse Pull Request no Github; então, confere as mudanças e depois termina a revisão cliclando em
Review changes
, adicionando um comentário na janela que se abre, indicando se as modificações foram bem sucedidas. Depois, seleciona a opção Approve e clica emSubmit Review
para concluir. A janela do Pull Request se abrirá novamente, permitindo que o proprietário finalize o processo de mesclagem clicando emMerge Pull Request
eConfirme merge
. -
Depois que seu Pull Request (PR) for revisado e aprovado pelos mantenedores do projeto, é importante realizar algumas etapas de limpeza e organização no seu repositório local e remoto. Isso mantém seu ambiente de trabalho organizado e sincronizado com o projeto principal. Siga os comandos abaixo para atualizar suas branches e remover as que não são mais necessárias:
-
Retorne para a branch
main
:git checkout main
-
Atualize sua
main
local com as mudanças doupstream
:git pull upstream main
-
Atualize a
main
do seu fork no Github:git push origin main
-
Remova a branch de funcionalidade localmente:
git branch -d nome-branch
-
Remova a branch de funcionalidade do seu fork remoto:
git push origin --delete nome-branch
-
Pull Request (PR) é o processo mais comum para sugerir mudanças em um projeto colaborativo no GitHub. Ao criar um PR, você solicita que suas alterações sejam revisadas e integradas à branch principal.
-
Comunicação: Descreva claramente o que foi alterado no PR para facilitar a revisão. Isso ajuda o mantenedor a entender o contexto das mudanças.
-
Boa Prática: Sempre trabalhe em branches separadas para manter a organização do repositório e garantir que a branch principal se mantenha estável.
Se você fez alterações em arquivos, mas não criou uma branch e nem as comitou, e percebeu que deveria estar trabalhando em uma nova branch, não se preocupe. É possível criar uma nova branch e mover suas alterações para ela, sem perder nada. Veja como proceder:
-
Salve temporariamente suas alterações não commitadas:
git stash save "Alterações em progresso"
-
Busque atualizações do repositório original:
git fetch upstream # Ou ... git fetch origin
-
Integre as mudanças do
upstream
:git merge upstream/main # Ou ... git merge origin/main
-
Crie e mude para uma nova branch:
git checkout -b sua-branch
-
Recupere as alterações salvas no stash:
git stash pop
-
Adicione os arquivos resolvidos ao stage:
git add .
-
Crie um commit com as alterações:
git commit -m "Descrição das alterações recuperadas"
-
Envie a branch para seu fork:
git push origin sua-branch
Após enviar suas alterações para seu fork, passe para a parte de criar um Pull Request no GitHub e siga os procedimentos conforme descrito anteriormente para proprietários (4.1.6. Criando e Gerenciando o Pull Request (PR)) ou colaboradores (4.2.6 Criando e Gerenciando Pull Request (PR)) do repositório.
Se ocorrer algum erro, é possível voltar ao estado anterior à modificação. Você pode até reverter para um estado anterior mais distante, mas é importante ter cuidado ao resetar commits mais antigos, pois isso pode impactar o histórico do projeto. Mesmo que isso não seja sempre necessário, é útil saber como proceder caso precise corrigir algo.
Primeiro, você precisa verificar o histórico de commits e identificar o ponto para o qual deseja reverter o projeto. Para isso, use o comando:
git reflog
Esse comando exibirá uma lista com o histórico de commits e seus identificadores (hashes), que são códigos alfanuméricos de 8 caracteres. Identifique o commit anterior ao erro que você deseja corrigir.
Para apagar a última modificação que foi mesclada (merged) em um projeto usando Git, você tem algumas opções. Aqui está a forma mais segura de fazer isso:
-
Para reverter o último commit mesclado mantendo o histórico:
git revert HEAD
-
Se você quer remover completamente o último commit (não recomendado se já foi compartilhado):
git reset --hard HEAD~1
Importante:
-
revert
é mais seguro pois cria um novo commit que desfaz as alterações -
reset --hard
é mais arriscado pois apaga o histórico -
Se o commit já foi enviado para o repositório remoto (pushed), use
revert
-
Se for local e ainda não compartilhado, pode usar
reset
Para voltar a um commit anterior, execute o seguinte comando, substituindo o identificador do commit pelo hash correspondente:
git reset --hard 7d0932f
Esse comando redefine o repositório local para o estado do commit especificado, desfazendo qualquer alteração feita após ele. Cuidado: isso removerá qualquer mudança não comitada.
Se você mudar de ideia e quiser restaurar o commit que acabou de
resetar, pode voltar atrás executando novamente o comando git reflog
e
usando o identificador do commit que deseja recuperar:
git reset --hard 5a6cc0a
Após fazer um reset local, é importante garantir que o repositório remoto também esteja atualizado. Se o repositório remoto tiver commits que você reverteu no local, será necessário forçar a atualização para alinhar ambos os históricos. Isso pode sobrescrever as alterações no servidor remoto, então tenha certeza das suas mudanças.
Para forçar o push das alterações locais para o repositório remoto, utilize:
git push --force
Esse comando força a sobrescrição do histórico remoto com o histórico local.
-
Usar
git reset --hard
com cautela: Esse comando remove permanentemente as alterações que não foram comitadas e pode alterar o histórico de commits. -
Reverta apenas se necessário: Antes de usar o
--force
para sobrescrever o repositório remoto, certifique-se de que isso não afetará o trabalho de outros colaboradores. -
Alternativa com
git revert
: Em vez de usarreset --hard
, você pode usargit revert
para desfazer alterações sem alterar o histórico. Isso cria um novo commit que desfaz as mudanças, mantendo a integridade do histórico de commits.
Se você fez alterações em um arquivo, mas ainda não fez o commit e deseja descartar essas modificações, retornando o arquivo ao estado do último commit, siga os passos abaixo usando o Terminal do Git:
Antes de qualquer ação, é importante verificar o estado atual do repositório e ver quais arquivos foram modificados ou estão prontos para commit.
git status
Esse comando listará os arquivos que foram modificados e se estão ou não no staging area (prontos para serem commitados).
Se você deseja descartar todas as modificações feitas em um arquivo específico e restaurá-lo ao estado do último commit, use o seguinte comando:
git checkout -- nome-do-arquivo
Esse comando descarta as alterações locais não commitadas no arquivo especificado, retornando-o ao estado do último commit.
Se o arquivo já foi adicionado ao staging area (ou seja, preparado para
commit com git add
), mas você quer removê-lo dessa área sem descartar
suas alterações, use o comando abaixo:
git reset HEAD nome-do-arquivo
Esse comando remove o arquivo do staging area e desfaz o git add
, mas
mantém as alterações feitas no arquivo. Isso é útil quando você quer
revisar ou modificar mais antes de commitá-lo.
-
Commits Pequenos e Frequentes: Realize commits de maneira frequente e com descrições claras. Isso facilita a revisão do código e ajuda a identificar pontos de erro rapidamente.
-
Sincronize Regularmente: Faça
git pull
regularmente antes de começar a trabalhar para garantir que você está com a versão mais recente do projeto. Isso evita conflitos e confusões. -
Use Branches: Sempre crie uma nova branch para implementar mudanças específicas, mantendo a branch
master
oumain
estável. -
Revisão de Código (Pull Requests): Utilize Pull Requests para revisar as alterações de forma colaborativa antes de mesclá-las à branch principal. Isso melhora a qualidade do código e reduz o risco de bugs.
-
Mensagens de Commit Claras e Descritivas: Escreva mensagens de commit que descrevam claramente as alterações feitas.
-
Verifique Arquivos Temporários: Certifique-se de não incluir arquivos temporários ou irrelevantes no commit.
-
Mantenha um
.gitignore
Atualizado: Mantenha o arquivo.gitignore
atualizado para evitar que arquivos desnecessários sejam incluídos no repositório. -
Teste Suas Alterações: Sempre teste suas alterações antes de realizar um commit.
-
Revise Suas Alterações Antes do Commit: Faça uma revisão cuidadosa das alterações antes de commitá-las.
-
Desfazer Alterações em Arquivos Específicos: Para desfazer alterações em arquivos específicos, consulte a seção 7.2 Descartar as Alterações em um Arquivo Específico.
-
Desfazer o Último Commit (Antes do Push): Para desfazer o último commit antes do push, utilize:
git reset --soft HEAD~1
-
Mostrar Estado Atual do Repositório:
git status
-
Listar Todas as Branches Locais:
git branch
-
Mostrar Todos os Repositórios Remotos Configurados:
git remote -v
-
Exibir Histórico de Commits de Forma Resumida:
git log --oneline