Skip to content

Latest commit

 

History

History
178 lines (147 loc) · 10.1 KB

README.md

File metadata and controls

178 lines (147 loc) · 10.1 KB

📓 GIT COMMANDS

Tópicos

Comandos O que faz?
git add Colocar arquivos na fase de stagging
git status log Ver o status das suas alterações
git commit Manipular alterações pós stagging
git push Enviar alterações para o repositório remoto
git pull Baixar informações do repositório remoto para o local
git fetch Atualizar referências
git branch/checkout Manipulação de branches e navegação entre branches
git mv/rm Trabalhando com arquivos e diretórios
git merge Fazendo merge entre branches
git rebase Reaplica commits em cima de determinada branch ou commit
git revert Como desfazer alterações
git reset Reseta o HEAD atual para o estado especificado
outros Mais comandos úteis

Nível de Perigo de Comandos

  • Inofensivo: Não faz nenhum tipo de alteração no seu projecto apenas entrega informações.
  • Atenção: Preste atenção nestes comandos, porque devem ser executados com plena consciência do que eles farão na sua estrutura git.
  • Perigoso: Estes comandos podem alterar a estrutura de ficheiros do seu projecto e isso pode causar a perda de ficheiros e diretórios.

Outros conceitos:

git add - Colocar arquivos na fase de stagging - (Atenção)

git add . - adiciona todas alterações feitas na fase de stagging.
git add file.txt - adiciona file.txt na fase de stagging.
git add *.js - adiciona todos arquivos com a extensão .js para fase de stagging, para saber mais como selecionar vários arquivos de uma só vez de uma olhada em wildcards.
git add --patch - vejo linha por linha da alteração e consigo selecionar o que quero adicionar ao commit.

git status/log - Ver o estado das suas alterações - (Inofensivo)

git status - vê estado dos commits.
git status -s - status resumido.
git status --short - status resumido.
git log - mostra lista de commits.
git log --oneline - mostra historico de commits em uma linha por commit.
git log --abbrev-commit - mostra historico de commits em uma linha por commit.
git log --color - mostra historico de commits e tenta colorir o output.
git log --graph - mostra historico em um grafico das branchs em modo texto.
git log --pretty - mostra historico e permite que sejam utilizados place holders para as informações dos commits.
git log --pretty=oneline - mostra o histórico de commits em uma linha por commit com o hash completo.

git commit - Manipular alterações pós stagging - (Atenção)

git commit -a - commit direto, sem passar por stagging.
git commit -m "Mensagem" - commit passando pelo stagging com mensagem de alteração.
git commit --amend - adiciona alterações no commit anterior.

git push - Enviar alterações para o repositório remoto - (Atenção)

git push origin master - envia as alterações para o repositório na branch master.
git push - envia as alterações para o repositório na branch em que você está.
git push --set-upstream origin new-branch - faz push da nova branch e suas alterações.
git push -u origin <nome_da_branch> - faz push da branch (nova ou não) e suas alterações.
git push --delete origin <nome_da_branch> - remove do repositório online a branch desejada.
git push origin --tags - além do push normal eu preciso fazer push das tags também, para acrescentar uma tag no que foi commitado.

git pull - Baixar informações do repositório remoto para o local - (Atenção)

git pull origin - baixa commits do repositório remoto.
git pull - baixa commits do repositório remoto (igual o de cima).
git pull --rebase - força rebase ao fazer pull.
git pull origin master --allow-unrelated-histories - Vai permitir que juntes dois repositórios com históricos de commits diferentes, exemplo: quando vc cria um novo repositório no Github e tem os arquivos README.md, LICENSE e no seu laptop existe já um repositório local com mais ficheiros e pretendes subir este repositório local para o Github, primeiro tens de juntar o repositório que está no Github com teu repositório local e sendo eles repositórios com históricos de commits diferentes vc precisa especificar a opção --allow-unrelated-histories quando fazer o git pull.

git fetch - Atualizar referências - (Atenção)

git fetch origin - atualiza as referências com um repositório remoto (busca branches etc).
git fetch atualiza as referências com um repositório remoto (busca branches etc) ||.

git branch/checkout - Manipulação de branches e navegação entre branches - (Atenção)

git branch <nome_da_branch> - cria nova branch com o nome desejado.
git branch - lista as branches disponíveis no repositório local.
git branch -d <nome_da_branch> - remove branch do repositorio local.
git checkout <nome_da_branch> - navega para aquela branch.
git checkout -b <nome_da_branch> - cria nova branch e já faz checkout nela.
git checkout - - o git checkout - te leva a branch que você estava trabalhando antes de trocar de branch.
git checkout HEAD~2 - move o HEAD para dois commits anteriores.
git checkout -- <arquivo> - recupera diretamente no working dir o arquivo desejado.
git checkout --ours <arquivo_conflito> - adiciona conteúdo sem modificação que conflitou.
git checkout --theirs <arquivo_conflito> - adiciona conteúdo em conflito na branch atual que estou.
git checkout <versao> - "travo" para usar aquele commit em específico.

git mv/rm - Trabalhando com arquivos e diretórios - (Perigoso)

git mv <nome_atual_do_arquivo> <nome_novo_do_arquivo> - renomeia um arquivo com um nome para um novo nome.
git mv <arquivo_1> <arquivo_2> <arquivo_3> ... <diretorio_de_destino> - move o arquivo_1, arquivo_2, arquivo_3 e mais outros para o diretório de destino. Nota: vc pode estudar sobre wildcards para conseguir selecionar um conjunto de arquivos sem a necessidade de escrever o nome de cada um deles. Exemplo: git mv *.js SCRIPTS-JS/ esse comando vai copiar todos arquivos com a extensão .js para o diretório SCRIPTS-JS/.
git rm <nome_do_arquivo> - remove determinado arquivo do repositório local. Nota: vc pode eliminar mais do que um arquivo e podes também usar wildcards .
git rm -r <nome_do_diretório> - remove determinado todo diretório com seus arquivos e subdiretórios.
git rm -r * - Elimina todos os arquivos e subdiretórios apartir da sua localização actual quando executar este comando.

git merge - Fazendo merge entre branches - (Atenção)

git merge <nome_da_branch> - faz merge com a branch desejada.
git merge <nome_da_branch> -no-ff - faz merge com a branch deseja no modo 3-way.
git merge -abort - cancela um merge que eu havia feito.

git rebase - Reaplica commits em cima de determinada branch ou commit - (Atenção)

git rebase <nome_da_branch> - reaplica todos os commits na branch desejada.
git rebase master -i - mostra lista de commits e posso alterar ela para mudar o histórico e tudo, muito foda.

git revert - Como desfazer alterações - (Perigoso)

git revert <hash> - reverte as alterações de um commit específico e cria um novo commit.
git revert - não modifica histórico de commits, mas cria um novo commit com o inverso do commit desejado, ou seja, o resultado final é o commit anterior.

git reset - Reseta o HEAD atual para o estado especificado - (Perigoso)

git reset HEAD~1 --hard - descarta e elimina as alterações do último commit.
git reset HEAD~2 <arquivo> - restaura para o staging as alterações do arquivo desejado em dois commits atrás.
git reset --mixed - altera o staging e o repositório, mantém o working dir intacto. É o padrão e é útil nos casos que queremos desfazer partes das alterações e criar um novo commit em seguida.
git reset --soft - similar ao mixed, mas mantém o staging como está.
git reset --hard - desfaz tudo a partir de um commit específico.

Outros - Mais comandos úteis do git

git tag <versao> - cria uma tag com a versao desejada.
git clone <repo> --depth - quero o clone a partir de X commits.
git clean -f - remove untracked files
git remote add origin <url_do_repositorio> - Faz uma ligação com o seu repositório remoto e essa ligação será chamada origin note que o nome da ligação pode ser alterado e não ser necessariamente origin.
git commit --author="Ms. Jane Codeldoe <Jane@Codeldoe.com>" -m "Jane wrote this I'm just committing" - Muda o autor de um determinado commit