Resumo de comandos do curso Versionamento de Código com Git e GitHub
Fechei o curso de Versionamento de Código com Git e GitHub brindado por Elidiana Andrade, foi muito bom assistir suas aulas, por isso compartilho para vocês um resumo de comandos que fiz, como guía.
******Git não reconhece pastas vazías só arquivos, ao menos que crie um arquivo dentro chamado .gitkeep
******Git não rastreia arquivos, aos arquivos mencionados dentro do .gitignore
******Para entrar no editor web do GiHub é só apertar (ponto) . do teclado dentro da interface de algun de nosso repositório a editar
==========================
COMANDOS BÁSICOS DO TERMINAL
*Cria pasta
→ mkdir nome-da-pasta
*cria arquivo com mensagem ou vazío
→ echo "print('Hello World!!')" > README.md
→ echo > README.md
*cria arquivo baixo de carpetas
→ tocuh nome-da-pasta/aula-01.md
==========================
==========================
FLUXO BÁSICO NO GIT
------------------
*Baixar do repositorio
→ git clone ./
Clona um repositorio Git existente para um novo diretório (pasta) local.
-------------------
-------------------
*Salvando uma nova versão
→ git commit
Grava alterações no reposiório
-------------------
-------------------
*Antes de enviar a nova versão que fiz preciso checkar se existe alterações
no reposiório para ver se meu amigo fez alguma coisa.
→ git pull
"Puxa" as alteraões do repositório remoto para o local(busca e mescla).
--------------------
--------------------
*Enviar a versão o respositório local para o remoto.
→git push
"empurra" as alterações do repositório local para o remoto.
==========================
==========================
CONFIGURANDO O GIT
→ git config
→ git config --global user.name "José Luis Khalid Palacios Alarcón"
→ git config --global user.email dev.josealarcon@gmail.com
*Para ver o branch padrão
→ git config init.defaultBranch
*Alterar o branch padrão pelo "main"
→ git config --global init.defaultBranch main
*Para ver configuraçãp do name é só colocar:
→ git config --global user.name
*Para ver configuraçãp do email é só colocar:
→ git config --global user.email
*Para ver as configurações ao todo global
→ git config --global --list
---------------------------------------
AUTENTICANDO POR TOKEN
*Para token global e credenciais é para que não peça user.name e token de novo cada vez que deseijo clonar
→ git config --global credential.helper store
*Mostra o endereço da variavel 'store' onde fica o token como credencial
→ git config --global --show-origin credential.helper
*Dentro da pasta onde se ubica o arquivo colocamos para ver o conteúdo
→ cat .gitconfig
*Mostra o token
→ cat .git-credentials
---------------------------------------
AUTENTICANDO POR SSH
*verifica se tem chave SSH
→ ls -a ~/.ssh
*Gera uma nova chave
Isto cria uma nova chave SSH, usando o nome de e-mail fornecido como uma etiqueta pede uma senha para a chave [Enter passphrase (empty for no passphrase:]
→ ssh-keygen -t ed25519 -C "dev.josealarcon@gmail.com"
*Verifique se o ssh-agent está em execução, vai gera rum pin
→ eval "$(ssh-agent -s)"
*Adicione sua chave SSH privada ao ssh-agent
→ ssh-add ~/.ssh/id_ed25519
*Entrar no diretorio para ver a chave
→ cd ~/.ssh
→ ls → (para ver a listagem da pasta)
→ cat id_ed25519.pub (cat lee o contúdo da chave publica)
*Ao final colar o codigo para o github
==========================
==========================
CRIANDO E CLONANDO REPOSIÓRIOS
---------------------------
CRIA REPOSIÓTRIO LOCAL
*Dentro da pasta criada debemos inicializar git
→ git init
---------------------------
CLONA REPOSIÓRIOS REMOTOS AO NOSSO COMPUTADOR
*Para clonar de un repositório remoto é:
→ git clone URL nome-do-repositorio-local (opcional: colocar um nome ao final para renomear)
Ex.
git clone https://github.com/dev-josealarcon/Hello-world.git repo-clonado
*Para clonar um reposiório que tem várias branch a gente pode selecionar só uma para poder clonar
→ git clone URL --branch nome-da-branch-que-gente-deseja-colocar --single-branch
Ex. git clone URL --branch feature-1 --single-branch
---------------------------
REPOSIÓTRIO LOCAL CONVERTER AO REPOSITORIO REMOTO
*Verifica se é um repositório remoto
→ git remote -v
*Para conetar-vincular um repositório local para um remoto no GitHub (origin é o nome padrão pra um repositório remoto)
→ git remote add origin URL
Ex. git remote add origin https://github.com/dev-josealarcon/repo-remoto.git
==========================
==========================
HISTÓRICO DE ARQUIVOS
*Mostra o histórico
→ git log
*Mostra o histórico mais detalhado
→ git reflog
==========================
==========================
SALVANDO ALTERAÇÕES NO REPOSITÓRIO LOCAL
*Mostra o estado do árvore de trabalho -Verifica se tem algum arquivo para ser enviado ou não (olha o estado do arquivo)
→ git status
*Adiciona um arquivo só ao área de preparação staged
→ git add nome-do-arquivo
*Adiciona todos os arquivos ao área de preparação staged
→ git add .
*salvando o arquivo ao repositório
→ git commit -m "mensagem"
==========================
==========================
DESFAZENDO ALTERAÇÕES NO REPOSITÓRIO LOCAL
*Remover o .git de uma pasta inicializada por erro (após fazer git init na pasta)
Na terminal é só eliminar o .git
→ rm -rf .git
*Restaura um arquivo após ter sido modificado e salvo (antes do git commit)
→ git restore nome-do-arquivo
*Altera o mensagem do último commit
→ git commit --amend -m "mensagem novo"
*Altera o mensagem do último commit com editor propio do Git Bash
→ git commit --amend
vai abrir um editor onde a gente pode editar manualmente
para sair do editor é escrever presionar a tecla ESC do teclado
→ ESC :wq
*Remover arquivos da área de preparação staged (do cor verde ao cor vermelho) reset ou restore --staged
**Opção 1:
→ git reset nome-do-arquivo
**Opção 2:
→ git restore --staged nome-do-arquivo
*Alterar para um commit anterior (deve usar o hash do commit,usar git log pra ubicar o hash)
**(git reset --soft) defaz até o commit do hash, colocando os aqruivos na área stage - cor verde
→ git reset --soft f670301b1ba257fd74f386ee725bd031d4825770
**(git reset --mixed) defaz até o commit do hash, colocando os aqruivos para não rastreado -cor vermelho
→ git reset --mixed f670301b1ba257fd74f386ee725bd031d4825770
**(git reset --hard) defaz até o commit do hash, apaga todos os arquivos
→ git reset --hard f670301b1ba257fd74f386ee725bd031d4825770
==========================
==========================
ENVIANDO E BAIXANDO ALTERAÇÕES COM O REPOSITÓRIO REMOTO
*Primeiramenta a gente tem que conetar o repositório local com o remoto
→ git remote add origin URL
*Enviar arquivos ao repositório remoto-GitHub
(-u : vai dizer ao git configurar nossa branch main que vai
estar a nosso repositorio remoto chamado origin)
→ git push -u origin main
*Baixar arquivos do repositório remoto ao local
→ git pull
==========================
==========================
BRANCHES - CRIANDO, MESCLANDO, DELETANDO E TRATANDO CONFLITOS
---------------------------------------
CRIA BRANCH
*Mostra a branch onde esta a gente
→ git branch
*Cria uma branch
→ git branch nome_da_branch_nova
*Cria branch e muda o punteiro
→ git checkout -b nome-da-branch_nova
*Mudar de branch
→ git checkout nome-da-branch
*lista os ultimos commit de todos os branch
→ git branch -v
---------------------------------------
MESCLA BRANCH
*Mescla a branch para onde fica o punteiro
→ git merge nome_da_branch
---------------------------------------
DELETA BRANCH
→ git branch -d nome_da_branch
---------------------------------------
TRABALHO EM EQUIPE - CONFLITOS DE MERGE
Acontece quando a gente tem aterações concorrentes.
Imagina que vc e seu amigo estam trabalhando no mesmo repositório e aí vcs
acabam alterando a mesma linha de código, então quando algum de vcs tentem enviar
acaba gerando um conflito com o outro havia enviado porque o git não vai entender alí
qual dessas alterações deve ser mantida, então ele retorna esse erro para que você decida
alí qual alteração vai manter.
"
![rejected]
error: failed to push some refs to URL...
"
Nesse caso o primeiro a fazer é trazer o modificado pelo amigo
→ git pull
Uma vez feito devemos comparar o código modificado dele com o nosso y decidir qual das
alterações vão a ficar. Como o arquivo foi modificado então procedemos assim.
→ git status
→ git add .
→ git commit -m "mensagem"
→ git push origin main
==========================
==========================
COMANDOS ÚTEIS NO DIA A DIA
---------------------------------------
TRAZER CÓDIGO REMOTO SEM MESCLAR COM O LOCAL
git pull = git fetch + git merge
*Antes de trazer código do repositorio remoto e mesclarlo com o nosso (git pull)
a gente pode verificar e comparar (git fetch, traz sem misturar) (git diff compara mudanças)
→ git fetch origin main
→ git diff main origin/main
→ git merge origin/main
---------------------------------------
---------------------------------------
CLONAR APENAS UMA BRANCH DE UM REPOSITORIO COM VARIAS BRANCH
→ git clone URL --branch nome-do-branch --single-branch
ex. git clone https://github.com/dev-josealarcon/repo-remoto.git --branch teste --single-branch
==========================