Skip to content

Instantly share code, notes, and snippets.

@reginadiana
Last active February 21, 2024 12:40
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save reginadiana/d69472636beba3440a65a85cdecea839 to your computer and use it in GitHub Desktop.
Save reginadiana/d69472636beba3440a65a85cdecea839 to your computer and use it in GitHub Desktop.
Anotações sobre Git

Comandos Git

Git é um sistema de controle de versão, copiando arquivos quando forem modificados e Github é como se fosse uma comunidade para desenvolvedores compartilharem seus códigos e projetos.

Hash é um número que identifica um commit.

A estrutura de um comando git é:

git ação modo

As ações podem ser add, remove, rebase, etc. Já o modo seria uma especie de "argumento", podendo ser um arquivo ou algum parametro posterior a um - ou --. Esse modo pode ser passado tanto de forma curta ou extensa, por exemplo, git add -f é o mesmo que git add --force


Configurações Iniciais

git init Inicia um repositório

git config --global user.name "seu nome" define um username git config --global user.email "seu nome" define um email

git config user.name mostra o username configurado

git config user.email mostra o email configurado


Adicionando modificações

Usamos o git add para separar os arquivos que queremos mandar para um commit.

git add nome_do_arquivo.ex adiciona um arquivo à árvore

git add . adiciona todos os arquivos modificados à árvore

git add . --force adiciona todos os arquivos modificados, incluindo os ignorados pelo .gitignore

git add . --no-all adiciona todos os arquivos modificados, exceto aqueles que foram deletados


Ciclo de vida dos arquivos no Gits

Untracked Unmodified Modified Staged
Arquivo criado mas não reconhecido pelo Git Arquivo reconhecido pelo git Arquivo modificado mas não foi salvo Arquivo pronto para ser salvo

Se voltarmos um commit, o arquivo passa para o estado Unmodified

Observando aonde o arquivo está no ciclo de vida e o que foi modificado

git status mostra o estado dos arquivos do projeto

git commit -m "mensagem do commit" adiciona arquivo no estado staged

git log --decorate e git log servem para visualizar as modificações feitas, datas comentários, autor das modificações, etc.

git log --author="" lista todos os commits realizados por uma determinada pessoa.

git shortlog visualiza todos os commits de todos os autores do projeto em um diretório.

git shortlog -sn visualiza a quantidade de commits por cada autor.

git diff mostra o arquivo com a parte modificada em destaque antes de ser levado ao commit.

git diff --name-only mostra o nome do arquivo modificado

Passeando com os arquivos no ciclo de vida

git checkout apaga a ultima modificação se feita antes de adicionar ao git.

⚠️ Caso o arquivo tenha sido adicionado a fila de commit (ou seja, após aplicar o comando git add <arquivo>), podemos usar git reset HEAD <arquivo> para retirá-lo desta fila.

git commit -am "comentário" realiza o commit de todos os arquivos modificados

⚠️ Caso o arquivo tenha sido commitado, podemos voltar esses ccommits com alguns comandos:

git reset --soft ele pega um código modificado e retorna ppara a fila de commits, mantendo o que foi modificado. O hash eescolhido deve ser pelo menos um anterior ao atual, pois justamente o hhash atual não existirá mais.

git reset --mixed o arquivo é mantido com as modificações e é enviado para o estado Untracked.

git reset --hard {hash} o arquivo não não é mantido com as modificações e é enviado para o estado Untracked.

git reset --hard desfaz todas as mudanças de arquivos commitados

git clean -fd desfaz todas as mudanças de pastas e arquivos que ainda não foram adicionados

Salvando as alterações dos arquivos sem fazer um commit (usando o stash)

Usamos esse recurso quando queremos deixar um arquivo de lado por um tempo, ou seja, quando vamos migrar os arquivos de uma branch para a outra mas existe um arquivo modificado em desenvolvimento.

git stash

Lista os arquivos guardados

git stash list
git stach show <numero> -p
git stach clear
git stach show <numero> --stat
git stash apply
git stash pop
git stash save "mensagem de commit que fica fora da arvore"

Baixa as referencias de uma branch

git fetch origin <branch>

Mergea e deleta branchs que não estão no repositório remoto

git fetch origin -p
git fetch -p

Criando atalhos com o git

Usamos isso para criar comandos mais curtos. Para definir basta usar:

git config --global alias.*comando desejado* *comando a ser simplificado*

Exemplo: git config --global alias.s status

Para chamar o "novo comando", basta usar:

git s

Como fazer versionamento com tags no git

Para gerar uma tag, podemos usar:

git tag -a <versão> -m "mensagem opcional de versionamento"

Para gravar essa tag, precisamos subi-lá:

git push origin <branch> --tags

Para listar as tags criadas:

git tag

Entendendo o Rebase

Rebase é uma forma de unir branchs de uma forma sequencial, se tornando uma boa opção durante o desenvolvimento.

Vantagem: Evita um commit extra para realizar o merge

Desvantagem: Muda o histórico, gerando confusão entre os desenvolvedores

Para atualizar uma branch com rebase:

git pull --rebase origin <branch>

Para chamas as branchs remotas, use:

git fetch

ls-la lista os repositórios

git remote add origin Adiciona um repositório remoto

📝 Para sair do editor vi e salvar o que foi escrito usamos as teclas :wq e enter

Como configurar ssh do github na maquina

Criando a ssh key

ssh-keygen -t ed25519 -C "<YOUR_GITHUB_EMAIL>"

eval "$(ssh-agent -s)"

Copie a chave publica

cat ~/.ssh/id_ed25519.pub

Cole o conteudo em Settings > SSH and GPT Keys:

image

Clone o repositorio com ssh

image

git clone git@github.com:reginadiana/bikcraft.git

@reginadiana
Copy link
Author

image

@reginadiana
Copy link
Author

Corrigindo erro de permissão ao tentar dar push na main

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment