Git & GitHub | Resumo de como configurar e Upar no GitHub (Para Usuários Intermediários)
Git | Como configurar e Upar no GitHub
Instalação | Autenticação | Upload para GitHub | Erros | Comandos extras |
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