Git & GitHub | Resumo de como configurar e Upar no GitHub (Para Usuários Intermediários)
Meu GitHub: Link GitHub Gist: Link
Resumo das explicações
- Aviso
- Comandos iniciais (Feito uma única vez)
> git init
> git remote add origin https://github.com/USER/REPO.git
Ou:
> git clone https://github.com/USER/REPO.git
- Mandar pro GitHub
> git add .
> git commit -m "Alterações no Menu"
> git push origin main
Instruções
Troque somente os campos "[string]" pela informação necessária. Ex: "[nome]" => "Gabriel"
Tutorial - Instalando o "Git"
Aviso Importante
Sempre antes/durante/depois do
"GIT PUSH ORIGIN MAIN
REZE PARA DEUS!!!!!!!!
- Agora o GitHub tem por padrão, o nome da branch como "main", ao invés de "master", como era usado antigamente, com isso é recomendado na instalação, optar por essa opção abaixo, para facilitar a integração com o GitHub.
Caso já tenha instalado o Git e inicializado o repositório, você pode trocar de master para main com esse comando:
> git branch -m master main
Configurando autenticação do "Git"
Primeiro vamos configurar o nosso Git que está localmente. Com nosso nome e e-mail (É recomendado o mesmo do GitHub)
- Configure o nome que você quer para todos os repositórios locais
> git config --global user.name "[nome]"
- Configura o e-mail que você quer ligado aos seus commit
> git config --global user.email "[endereco-de-email]"
Escolha a maneira que você quer prosseguir
Repositório "Novo"
Comandos quando devem ser feitos apenas na criação de um novo repositório
Escolha a pasta do projeto e crie o repositório Git com o comando:
- Cria o repositório local
> git init
- Linka o repositório remoto, ou seja, linka com o repositório GitHub O link pode ser encontra aqui, como mostrado na image:
Ex: https://github.com/PuniGC/ProjetoEscolaAPI_React-dotnet
> git remote add origin https://github.com/USER/REPO.git
- Agora prossiga com as etapas do repositório existente
Repositório "Existente" no Github
- Clonar repositório do GitHub
> git clone https://github.com/PuniGC/ProjetoEscolaAPI_React-dotnet
Repositório "Existente" e Comandos para mandar pro GitHub
Vamos adicionar os arquivos que podem ser comitados
- Adicionar todos os arquivos
> git add .
Ou
- Adicionar um único arquivo
> git add index.html
Agora após realizar alguma alteração em nossos arquivos, devemos comitados (Colocar na fila) para serem enviados ao repositório do GitHub
- Confirmar as alterações:
> git commit -m "[mensagem-que-aparecera-no-github]"
Recomendam-se nomes não genéricos, para indicar alterações o motivo da alteração. Ex:
> git commit -m "[+] Resolvido Bug no componente Login"
Por fim, devemos enviar as alterações para o GitHub
- Enviando alterações
> git push origin main
Prontinho, sucessooooo.
Obs 1: Sem Observações Obs 2: A Obs 3 é falsa Obs 3: A Obs 2 está correta
EM CASO DE ERRO NO Git Push
Pode ser que, você tenha um erro ao tentar dar git push
, o erro chama-se conflito de merge, e isso acontece quando dois desenvolvedores ou você mesmo, alteram o mesmo trecho de código (em diferentes computadores) e a única maneira de resolver este conflito é através de uma intervenção manual, temos dois computadores que possuem diferentes alterações, é muito comum até em empresas, mas não se preocupe.
Para resolver isso, siga os seguintes passos: CHAMAR O SANTANA, brincadeira kkkkk
Escolha um dos video que explica como resolver esses conflitos, e siga o tutorial, pois é algo um pouco difícil de explicar por texto
- Video Tutorial - Explicação e Resolução 1#
- Video Tutorial - Explicação e Resolução 2#
- Video Tutorial - Explicação e Resolução 3#
E provavelmente, após resolver o conflito de merge, o video indicara para você realizar esses comandos para por fim mandar o merge/alterações para o GitHub.
git add .
git commit -m "[+] Resolvendo merge conflit (Nova Feature no SelectMenu)"
git push origin main
Ebaaaaaaa... acabou <3
EM CASO DE OUTROS ERROS
- Não abra a mão de tudo, PESQUISE!!!, isso, procure o erro na internet, stackoverflow, discord e professores/colegas, não tenha medo ou vergonha disso, é super normal darem esses erros, acredite, até com programadores experientes e comigo kkk, e até mesmo eles dão um Google nessas horas, assim como tudo, pratique, pois a melhor forma de resolver um erro, é evitando ele. E sim, eu sei que isso é algo que abrimos muitas vezes mão de fazer, mas acredite essa é a única maneira de resolver o seu problema, não fique apenas correndo atrás dos outros, foque em apreender e praticar, para que na próxima vez, quem se assuste com o erro, seja ele mesmo. Além disso, você pode me procurar também, seja no Discord ou por E-mail, fico feliz em ajuda, quem saiba eu não ajude a resolver, te ensino e ainda apreendo junto sobre, kkkkkk, a final, todos nos somos estudantes nessa jornada, só cuidado com a prática do POSDQ - Programação Orientada a Seja o que Deus Quiser.
Outra dica importante, tente procurar erros ou assuntos em inglês, há muito mais conteúdo em inglês devido à linguagem ser umas das principais línguas do mundo, ou seja, tem muito mais soluções escritas e documentadas nessa língua, o que ajuda bastante.
Git Ignore - Ignorar arquivos (Não mandar esses arquivos do Git local para a GitHub)
Basta criar um arquivo chamado .gitignore e nele colocar os nomes do arquivos
- Mais sobre:
Sobre: https://help.github.com/articles/ignoring-files Modelos úteis: https://github.com/github/gitignore
Por fim ... Referencias
- Configuração relacionada: https://gist.github.com/hofmannsven/6814278
- Dicas profissionais relacionadas: https://ochronus.com/git-tips-from-the-trenches/
- Tutorial interativo para iniciantes: http://try.github.io/
- Git Cheatsheet do GitHub: https://training.github.com/downloads/pt_BR/github-git-cheat-sheet/
Comandos adicionais (+Mais técnicos)
Mostrar conteúdo da pasta: ls -la
Comandos de Ajuda
Veja onde o Git está localizado:
que git
Obtenha a versão do Git:
git --version
Crie um alias (atalho) para git status
:
git config --global alias.st status
Ajuda:
git help
Comandos adicionais
Verifica qual é o remote atual
git remote -v
Adicione e confirme em uma etapa:
git commit -am "Mensagem"
Remova os arquivos do Git:
git rm index.html
Atualize todas as alterações:
git add -u
Remova o arquivo, mas não rastreie mais:
git rm --cached index.html
Mover ou renomear arquivos:
git mv index.html dir/index_new.html
Desfazer modificações (restaurar arquivos da última versão confirmada):
git checkout -- index.html
Restaurar arquivo de um commit personalizado (no branch atual):
git checkout 6eb715d -- index.html
Redefinir
Volte para o commit:
git revert 073791e7dd71b90daa853b2c5acc2c925f02dbc6
Soft reset (mova apenas HEAD; nem o staging, nem o diretório de trabalho são alterados):
git reset --soft 073791e7dd71b90daa853b2c5acc2c925f02dbc6
Desfazer o último commit: git reset --soft HEAD~
Redefinição mista (mova HEAD e altere o staging para corresponder ao repositório; não afeta o diretório de trabalho):
git reset --mixed 073791e7dd71b90daa853b2c5acc2c925f02dbc6
Hard reset (mova HEAD e altere o diretório de teste e o diretório de trabalho para corresponder ao repositório):
git reset --hard 073791e7dd71b90daa853b2c5acc2c925f02dbc6
Hard reset de um único arquivo (@
é a abreviação de HEAD
):
git checkout @ -- index.html
Atualizar e excluir
Teste-exclua arquivos não rastreados:
git clean -n
Excluir arquivos não rastreados (sem preparação):
git clean -f
Desfaça (desfaça adições):
git reset HEAD index.html
Atualize o commit mais recente (atualize também a mensagem do commit):
git commit --amend -m "Nova mensagem"
Ramo
Mostrar ramos:
git branch
Criar filial:
git branch branchname
Mudar para filial:
git checkout branchname
Crie e mude para um novo branch:
git checkout -b nome do ramo
renomear ramo:
git branch -m branchname new_branchname
ou:
git branch --move branchname new_branchname
Mostrar todas as ramificações completamente mescladas com a ramificação atual:
git branch --merged
Excluir branch mesclado (possível apenas se não for HEAD):
git branch -d branchname
ou:
git branch --delete branchname
Excluir branch não mesclado:
git branch -D branch_to_delete
Mesclar
Mesclagem verdadeira (avanço rápido):
git merge branchname
Mesclar para mestre (somente se avançar):
git merge --ff-only branchname
Mesclar para master (forçar um novo commit):
git merge --no-ff branchname
Parar a mesclagem (em caso de conflitos):
git merge --abort
Parar a mesclagem (em caso de conflitos):
git reset --merge
//antes da v1.7.4
Desfaça a mesclagem local que ainda não foi enviada:
git reset --hard origin/master
Mescle apenas um commit específico:
git cherry-pick 073791e7
Rebase:
git checkout branchname
» git rebase master
ou:
git merge master branchname
(O rebase move todos os commits em master
para a ponta de branchname
.)
Cancelar rebase:
git rebase --abort
Esmague vários commits em um:
git rebase -i HEAD~3
(fonte)
Squash mescla um branch de recurso (como um commit):
git merge --squash branchname
(commit depois)
Estoque
Colocar em estoque:
git stash save "Mensagem"
Mostrar estoque:
git stash list
Mostrar estatísticas de estoque:
git stash show stash@{0}
Mostrar alterações de stash:
git stash show -p stash@{0}
Use o item de stash personalizado e solte-o:
git stash pop stash@{0}
Use um item de stash personalizado e não o deixe cair:
git stash apply stash@{0}
Use o item e o índice do stash personalizados:
git stash apply --index
Criar ramificação do stash:
git stash branch new_branch
Excluir item de stash personalizado:
git stash drop stash@{0}
Excluir stash completo:
git stash clear
##Gitignore & Gitkeep
Adicione ou edite gitignore:
nano.gitignore
Rastrear diretório vazio:
touch dir/.gitkeep
Registro
Mostrar compromissos:
gitlog
Mostrar resumo de uma linha de commits:
git log --oneline
Mostrar resumo de uma linha de commits com SHA-1 completo:
git log --format=oneline
Mostrar resumo de uma linha dos últimos três commits:
git log --oneline -3
Mostrar apenas commits personalizados:
git log --author="Sven"
git log --grep="Message"
git log --until=2013-01-01
git log --since=2013-01-01
Mostrar apenas dados personalizados do commit:
git log --format=short
git log --format=full
git log --format=f
Wow, de fato tem muito conteúdo ai. Alguns eu ja conhecia de alguns perrengues, já outros foram bem recebidos, hehehe.
Algo que uso bastante também é relacionado a apagar branchs locais que já foram mergidas: (Por vezes me vejo em um mar de branchs locais que já não existem mais)
git branch -vv
Usando este comando ele adiciona um flag gone indicando que não há mais tracking para a branch. Isso acontece quando, após um pull request, a branch é mergida e deletada.
Pode-se então usar o output deste comando para efetuar a limpeza das branchs, usando:
git fetch -p && git branch -vv | awk '/: gone]/{ print $1} ' | xargs git branch -d
Espero ter contribuido =D
que isso mlk, ficou mt show... tem comandos aí que eu nem conhecia. Vou até deixar nos favoritos do chrome pra ver sempre que precisar
Opa, bem legal para quem precisa entender como usar o git. Duas adições:
- Nesse post foi feita referência a uma extensão muito útil do VSCode chamada Git Graph que permite ver a evolução do código com estrutura de árvore;
- Nesse outro post tem mais alguns passos para quem queira configurar a chave de acesso ao GitHub;
[DEV] salvando a tab !!
Obrigado já salvei aqui no favoritos
Vou salvar esse post para melhorar minhas anotações de git/github.
Obrigado por compartilhar seu conhecimento conosco.
Um método mais prático, rápido e preguiçoso é usar o GitHub desktop. É uma interface gráfica simples e fácil de usar. Claro, é de extrema importância aprender a utilizar o Git, mas depois do mesmo dominado, podemos nos dar uma xicara de chá kkkk.
Windows e Mac: https://desktop.github.com/ Linux: https://github.com/shiftkey/desktop
Instalar para o Linux é um pouco mais complicado kkk