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\] $ "
- 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
- 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).
- 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>
- 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.
- 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>