Skip to content

PedroFerreiraCJr/git-samples

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 

Repository files navigation

git-samples

Repositório contendo uma referência aos principais comandos do git.

Árvores do Git


Variável de ambiente linux

Os usuários do linux podem utilizar o seguinte script para visualizar a branch atual no terminal. Para isso, altere o arquivo ~/.bashrc adicionando o seguinte shell script.

parse_git_branch() {
     git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1="\u@\h \[\033[32m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\] $ "

Configuração inicial

  • Para que seja possível utilizar o Git da maneira correta é necessário configurar alguma informações relacionadas ao usuário que está atualmente usando a ferramenta. Esses comandos são necessários para que o Git faça o reconhecimento do usuário atualmente fazendo o commit, pois ele não solicita credenciais como o email, ou nome de usuário.
git config --global user.name "Nome da pessoa"
git config --global user.email "email.da.pessoa@email.com"
  • Outra configuração que é considerada importante é o editor padrão utilizado pelo Git em alguma situações que precisam de intervenção do usuário. O comando para alterar o editor padrão utilizado pelo Git é o seguinte:
git config --global core.editor "nano"

Obs:. O editor configurado neste exemplo foi o Nano.
Obs:. Para verificar se o comando surtiu efeito, use: git config --list.

  • Uma forma de visualizar o arquivo global de configuração do Git, é através do comando abaixo:
git config --global -e

Obs:. Isso possibilita visualizar e alterar o arquivo.

  • Exemplo de arquivo de configuração que usa o editor vscode para algumas das operações que precisam de intervenção do usuário:
[user]
	email = pedroferreiracjr@gmail.com
	name = Pedro Júnior
[core]
	editor = code --wait
[merge]
	tool = vscode
[mergetool "vscode"]
	cmd = code --wait $MERGED
[diff]
	tool = vscode
[difftool "vscode"]
	cmd = code --wait --diff $LOCAL $REMOTE
[mergetool]
	keepBackup = false

Comandos

  • Para fazer a criação de um novo repositório local, utilize o comando abaixo, na pasta onde o repositório deve ser criado:
git init

Obs:. Um repositório Git nada mais é do que um diretório que contém um subdiretório chamado .git; este é o diretório que o git usa para controlar o versionamento do projeto.
Obs:. Com relação ao comentado acima, para remover o controle de versão de um projeto, basta remover a pasta que faz o controle do git (.git) de dentro do projeto.

  • Para fazer a criação de um novo repositório local fornecendo o nome pasta onde o repositório deve ser criado, use:
git init nome-do-projeto

Obs:. Este comando é utilizado em um projeto criado do zero, sem ter o diretório do projeto criado, é possível executar o comando que segue para criar a pasta e inicializar um repositório Git:

  • Para fazer criação de um novo repositório que será utilizado como servidor remoto, é possível usar o seguinte comando:
git init --bare

Com o comando git init --bare você está criando um repositório que é pushable. Geralmente os repositórios bare são criados no servidor e são considerados repositórios para armazenamento, em contraste aos repositórios que vão nas máquinas dos desenvolvedores que seriam os repositórios de desenvolvimento, criados com o comando git init (sem o --bare).

FAQ do StackOverflow

  • Para fazer a criação de um repositório local a partir de um repositório já existente hospedado, por exemplo, em um serviço de hospedagem de repositório do Git, utilize o seguinte comando:
git clone https://github.com/PedroFerreiraCJr/git-samples.git

Obs:. Neste caso, foi usado uma url de repositório que está hospedado no serviço do GitHub.

  • O mesmo comando permite clonar um repositório que existe localmente; supondo que mywebsite seja um repositório local do git, para clonar o mesmo para outro repositório local, execute:
git clone mywebsite/ mywebsite2
  • O comando abaixo mostra o estado atual do diretório de trabalho (working directory) do Git:
git status

Obs:. Os arquivos listados na cor vermelha são os arquivos que foram alterados (modified) ou ainda não estão sendo rastreados (untracked) pelo git.

  • Para adicionar os arquivos alterados ou criados ao commit, utilize o comando:
git add [.|file_name|--all|-A]
  • Antes de realmente fazer o commit dos arquivos que estão no diretório de trabalho do Git, e salvar o estado atual no histórico de commits, caso seja preciso remover qualquer arquivo rastreado pelo Git do commit atual (após ter executado o comando git add .), utilize o comando:
git reset HEAD <nome_do_arquivo>

Obs:. Outra forma de remover um arquivo da Staging Area do Git e, deixar de fazer o rastreamento do arquivo deixando ele no diretório de trabalho, é executando o comando a seguir:

git rm --cached <nome_do_arquivo>
  • Para desfazer alterações feitas em um arquivo que está no Staging Area, utilize o comando:
git restore --staged <nome_do_arquivo>
  • Utilize o seguinte comando para remover o arquivo do repositório local do Git, assim como remover do sistema de arquivos:
git rm <nome_do_arquivo>

Obs:. O arquivo a ser removido já deve estar sendo rastreado pelo Git.
Obs:. Para remover um arquivo do rastreamento do Git, basta adicioná-lo ao arquivo .gitignore.

  • Para desfazer todas as alterações no diretório de trabalho do Git e, apontar para o último estado rastreado por commit, utilize o comando:
git reset --hard HEAD
  • Para desfazer o último commit realizado sem perder as alterações feitas nele, trazendo os arquivos modificados para o diretório de trabalho do Git, utilize o seguinte comando:
git reset --soft HEAD~1
  • Qual o comando para listar todos os arquivos rastreados pelo Git?
git ls-tree -r master --name-only
  • Quando for preciso realizar um novo commit, basta adicionar os arquivos alterados que estão no diretório de trabalho a Stage Area do Git; para isso é necessário usar o comando add e, depois, o comando a seguir:
git commit -m "mensagem que deve descrever as alterações realizadas no projeto"
  • Para visualizar todos os commits efetuados em determinada branch (ramo), use o seguinte comando:
git log

Obs:. Para visualizar somente os últimos 5 commits, basta fornecer o parâmetro: -n 5.

  • Para visualizar todos os commits efetuados em determinada branch de forma resumida, mostrando somente o hash e mensagem do commit, utilize o seguinte comando:
git log --oneline
  • Para visualizar todos os commits efetuados em determinada branch, mostrando as alterações que foram realizadas em cada um dos arquivos, use o seguinte comando:
git log -p
  • Para visualizar um resumo de todos os arquivos alterados em todos os commits, utilize o seguinte comando:
git log --stat
  • Qual o comando para listar todos os arquivos rastreados e até mesmo os deletados?
git log --pretty=format: --name-only --diff-filter=A | sort - | sed '/^$/d'

Stack Overflow
Documentação do comando log

  • Para visualizar os arquivos que foram alterados em determinado commit, utilize o seguinte comando:
git show --pretty="" --name-only <hash-do-commit>

Documentação do comando show

  • Para criar uma nova branch (ramificação) a partir da branch atual, utilize o seguinte comando:
git branch <nome-da-branch>
  • Para listar todas as branchs locais, utilize o seguinte comando:
git branch

Obs:. A branch que contém um asterisco, é a branch que está em uso.

  • Para listar todas as branchs existentes, seja local ou remota, utilize o seguinte comando:
git branch -a

Obs:. A branch que contém um asterisco, é a branch que está em uso.

Documentação do comando branch

  • Para trocar de branch, utilize o seguinte comando:
git checkout <nome-da-branch>

Obs:. O comando checkout pode ser utilizado para executar algumas operações, sendo: criar uma nova branch e imediatamente trocar para ela; navegar pelo histórico de commits do Git.

  • O comando seguinte cria uma nova branch e torna ela o ramo atual:
git checkout -b <nome-da-branch>
  • Outra funcionalidade muito importante do Git, conforme já mencionado, são as branchs. Com elas é possível criar uma linha de desenvolvimento paralela a principal. E quando for preciso mesclar as funcionalidades desenvolvidas, por exemplo, uma feature de login (branch: feature/login), basta usar o comando:
git checkout master
git merge feature/login
  • Caso seja preciso abortar a mesclagem dos arquivos por qualquer motivo, em caso de conflito, por exemplo, basta executar o comando abaixo, e a mesclagem será cancelada:
git merge --abort
  • Para analisar e corrigir qualquer conflito que tenha sido causado no momento do merge entre branchs usando o vscode, é possível usar o comando:
git mergetool

Obs:. Para usar outra ferramenta de análise de conflito, use o parâmetro -t e o comando, exemplo: -t vscode.

  • Para visualizar as modificações nos arquivos da branch atual usando um editor de análise de diferenças padrão, basta executar o comando abaixo:
git difftool

Obs:. Caso se depare com a criação de arquivos como: *.orig, .BACKUP, .BASE, .LOCAL, .REMOTE; e quiser eliminar esses arquivos no momento da correção do merge e commit, basta executar a seguinte configuração no Git: git config --global mergetool.keepBackup false

  • Para deletar uma branch local, utilize o seguinte comando:
git branch -d <nome-da-branch>

Obs:. O parâmtro -d é um atalho para --delete.

  • Para forçar a deleção em uma branch local, utilize o seguinte comando:
git branch -D <nome-da-branch>

Obs:. O parâmtro -D é um atalho para os parâmetros --delete --force.
Obs:. A deleção forçada pode ser utilizada quando a branch não foi mesclada, e mesmo assim se deseja deletá-la.

  • Para forçar a deleção de uma branch remota, utilize o seguinte comando:
git push origin --delete <nome-da-branch>

Obs:. O alias 'origin' é o identificador do servidor remoto.
Obs:. Este comando deve funcionar mesmo não tendo deletado a branch localmente.

  • O comando a seguir permite que seja feita a troca de contexto, salvando temporariamente as alterações (sem commit, para arquivos modificados e adicionados com o comando git add) da branch atual, para que seja possível trabalhar em outra branch, ou até mesmo, levar as alterações feitas até o momento para outra branch; após este comando a branch se tornar "clean":
git stash

Obs:. O comando stash só permanece localmente.
Obs:. Arquivos ignorados pelo Git, assim como não rastreados não são adicionados ao stash.
Obs:. Para que seja possível adicionar um arquivo não rastreado pelo Git ao stash, é necessário passar o parâmetro -u (ou --include-untracked), para esse propósito.

  • O comando seguinte faz a listagem dos índices de stash salvos atualmente:
git stash list
  • Para remover todos os índices de stash salvos temporariamente, basta executar o comando a seguir:
git stash clear

Obs:. Este comando descarta todas as alterações salvas temporariamente no stash.

  • Para remover somente um determinado índice do stash, execute o seguinte comando:
git stash drop stash@{1}

Obs:. Este comando descarta o índice do stash de valor 1.

  • Para aplicar as alterações salvas temporariamente no stash, mesmo existindo mais de um índice no stash, basta executar o seguinte comando para aplicar o primeiro índice:
git stash apply

Obs:. Este comando não descarta o índice do stash.

  • Para aplicar as alterações salvas temporariamente no primeiro índice do stash, basta executar o seguinte comando para aplicar o último índice e remover automaticamente:
git stash pop
  • Para ter uma lista de arquivos alterados e, que foram salvos temporariamente pelo comando stash, basta usar o comando a seguir:
git stash show
  • Para visualizar uma lista de diff's dos arquivos alterados, execute:
git stash show -p

Obs:. O parâmtro -p é de patch, ou --patch.

  • Para adicionar um repositório remoto ao repositório local do git, utilize o seguinte comando:
git remote add origin https://github.com/PedroFerreiraCJr/git-samples.git

Obs:. "origin" é um alias para a branch remota.
Obs:. É possível adicionar mais de uma branch remota.

  • Forma de adicionar um repositório remoto a uma repositório local que utiliza SSH:
git remote set-url origin git@github.com:pedroferreiracjr/your-repository.git

Obs:. A configuração da chave SSH deve ter sido feita previamente.

  • Para visualizar as branchs remotas do repositório local do git, utilize o seguinte comando:
git remote -v
  • Para remover um repositório remoto do repositório local, utilize o seguinte comando:
git remote rm <nome_do_repositório_remoto>
  • Para obter mais informações sobre o comando remote no próprio terminal, utilize o comando:
git help remote

Documentação do comando remote

  • Para baixar todas as alterações do repositório remoto para o repositório local, utilize o seguinte comando:
git pull <origin> <master>

Obs:. O comando acima está apontando para o repositório remoto origin e branch master. Alterar os parametros origin e master para o repositório remoto e branch, respectivamente, de sua escolha. Documentação do comando pull

  • Para atualizar a branch local de uma feature com os commits que podem ter sido enviados para a branch remota que deu origem a esta branch local, basta usar o seguinte comando:
git fetch
git rebase origin/master

Obs:. Este comando supoe que o servidor remoto se chama origin e, a branch que deu origem a esta branch local é a master.

  • Para enviar a branch do repositório local para o servidor remoto, utilize o seguinte comando:
git push -u <origin> <master>

Obs:. Utilize o parâmetro -u equivalente à --set-upstream somente quando a branch ainda não existir no repositório remoto.

  • Para mandar todas as alterações (commits) do repositório local para o repositório remoto, utilize o seguinte comando:
git push <origin> <master>

Obs:. É possível trocar os parâmetros: origin, e master, para um repositório remoto e branch remota pré-existente.

Documentação do comando push

  • Para visualizar todas as modificações na branch atual, utilize o seguinte comando:
git diff

Obs:. Para visualizar todas as modificações na branch atual, quando já houver usado o comando git add, use o seguinte comando:

git diff --cached
  • Para visualizar as diferenças entre duas branchs, utilize o seguinte comando:
git diff <nome_da_branch1> <nome_da_branch2>

Documentação do comando diff

About

Minhas notas sobre os mais variados comandos do Git.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published