$ git init # Define e imprime algumas variáveis de configuração básicas (global) $ git config --global user.email "MyEmail@Zoho.com" $ git config --global user.name "My Name" $ git config --global user.email $ git config --global user.name # Ver rapidamente os comandos disponiveis $ git help # Ver todos os comandos disponíveis $ git help -a # Usar o *help* para um comando específico # git help $ git help add $ git help commit $ git help init # ou git --help $ git add --help $ git commit --help $ git init --help $ echo "temp/" >> .gitignore $ echo "chave_privada" >> .gitignore # Apresenta a *branch*, arquivos não monitorados, alterações e outras # diferenças $ git status # Para aprender mais detalhes sobre git *status* $ git help status # adiciona um arquivo no diretório do projeto atual $ git add OlaMundo.java # adiciona um arquivo em um sub-diretório $ git add /caminho/para/arquivo/OlaMundo.java # permite usar expressões regulares! $ git add ./*.java # Você também pode adicionar tudo no seu diretório de trabalho como alterações prontas para o próximo commit. $ git add -A # listar *branches* existentes e remotos $ git branch -a # criar uma nova *branch* $ git branch myNewBranch # apagar uma *branch* $ git branch -d myBranch # alterar o nome de uma *branch* # git branch -m $ git branch -m myBranchName myNewBranchName # editar a descrição de uma *branch* $ git branch myBranchName --edit-description # Listar tags $ git tag # Criar uma tag anotada. # O parâmetro -m define uma mensagem, que é armazenada com a tag. # Se você não especificar uma mensagem para uma tag anotada, # o Git vai rodar seu editor de texto para você digitar alguma coisa. $ git tag -a v2.0 -m 'minha versão 2.0' # Mostrar informações sobre a tag # O comando mostra a informação da pessoa que criou a tag, # a data de quando o commit foi taggeado, # e a mensagem antes de mostrar a informação do commit. $ git show v2.0 # Enviar uma tag para o repositório remoto $ git push origin v2.0 # Enviar várias tags para o repositório remoto $ git push origin --tags # Checkout de um repositório - por padrão para a branch master $ git checkout # Checkout de uma branch especifica $ git checkout branchName # Cria uma nova branch e faz checkout para ela. # Equivalente a: "git branch ; git checkout " $ git checkout -b newBranch # Clona learnxinyminutes-docs $ git clone https://github.com/adambard/learnxinyminutes-docs.git # Clone superficial - É mais rápido, mas puxa apenas o último commit $ git clone --depth 1 https://github.com/adambard/learnxinyminutes-docs.git # Clona apenas uma branch em específica $ git clone -b master-cn https://github.com/adambard/learnxinyminutes-docs.git --single-branch # Realiza um commit com uma mensagem $ git commit -m "Adicione a função multipliqueNumeros() em OlaMundo.c" # Assine um commit com sua chave GPG. Antes disso, você precisa ter # configurado a opção user.signkey do git com o comando: # git config --global user.signinkey ID_CHAVE_AQUI $ git commit -S -m "mensagem do commit aqui" # Automaticamente adicione como preparados arquivos modificados ou apagados e # então realize um commit: $ git commit -a -m "Modified foo.php and removed bar.php" # Altere o último commit (Esse comando cria um novo commit com o conteúdo do # commit anterior mais suas novas alterações e sobrescreve o último commit) $ git commit --amend -m "Correct message" # Apresenta a diferença entre o diretório atual e o index $ git diff # Apresenta a diferença entre o index e os commits mais recentes $ git diff --cached # Apresenta a diferença entre o diretório atual e o commit mais recente $ git diff HEAD # Define a apresentação de números de linha nos resultados do grep $ git config --global grep.lineNumber true # Agrupa os resultados da pesquisa para facilitar a leitura $ git config --global alias.g "grep --break --heading --line-number" # Pesquisa por "variableName" em todos os arquivos java $ git grep 'variableName' -- '*.java' # Pesquisa por uma linha que contém "arrayListName" e "add" ou "remove" $ git grep -e 'arrayListName' --and \( -e add -e remove \) # Apresenta todos os commits $ git log # Apresenta apenas mensagem do commit e referência $ git log --oneline # Apresenta apenas commits de merge $ git log --merges # Apresenta todos os commits representados por um gráfico em ASCII $ git log --graph # Junta a branch especificada com o atual $ git merge branchName # Para gerar sempre um commit ao juntar as branches $ git merge --no-ff branchName # Alterar o nome de um arquivo $ git mv OlaMundo.c OlaNovoMundo.c # Mover um arquivo $ git mv OlaMundo.c ./novo/caminho/OlaMundo.c # Forçar a alteração de nome ou mudança de local # Se o arquivo já existir no diretório, será sobrescrito. $ git mv -f myFile existingFile # Atualiza o repositório local, juntando as novas alterações # do repositório remoto 'origin' e branch 'master' # git pull $ git pull origin master # Por padrão, o git irá realizar o pull na branch atual fazendo um merge # com as alterações novas na branch remota $ git pull # Juntar alterações da branch remote e fazer rebase commits da branch # no repositório local, como: "git pull , git rebase " $ git pull origin master --rebase # Envia e junta as alterações de um repositório local # para um remoto denominado "origin" na branch "master". # git push $ git push origin master # Por padrão, o git push irá enviar e realizar merge das mudanças da sua branch # local com a branch remota $ git push # Para associar a branch local com uma branch específica remota, adicione a # flag -u $ git push -u origin master # Agora, sempre que você realizar um push daquela branch local, use o atalho: $ git push $ git stash Saved working directory and index state \ "WIP on master: 049d078 added the index file" HEAD is now at 049d078 added the index file (To restore them type "git stash apply") git pull $ git status # On branch master nothing to commit, working directory clean $ git stash list stash@{0}: WIP on master: 049d078 added the index file stash@{1}: WIP on master: c264051 Revert "added file_size" stash@{2}: WIP on master: 21d80a5 added number to log $ git stash pop # On branch master # Changes not staged for commit: # (use "git add ..." to update what will be committed) # # modified: index.html # modified: lib/simplegit.rb # # Faz Rebase de experimentBranch para master # git rebase $ git rebase master experimentBranch # Restabelece a camada intermediária de registo para o último # commit (o diretório fica sem alterações) $ git reset # Restabelece a camada intermediária de registo para o último commit, e # sobrescreve o projeto atual $ git reset --hard # Move a head da branch atual para o commit especificado, sem alterar o projeto. # todas as alterações ainda existem no projeto $ git reset 31f2bb1 # Inverte a head da branch atual para o commit especificado # fazendo com que este esteja em sintonia com o diretório do projeto # Remove alterações não registradas e todos os commits após o commit # especificado $ git reset --hard 31f2bb1 38b323f HEAD@{0}: rebase -i (finish): returning to refs/heads/feature/add_git_reflog 38b323f HEAD@{1}: rebase -i (pick): Clarify inc/dec operators 4fff859 HEAD@{2}: rebase -i (pick): Update java.html.markdown 34ed963 HEAD@{3}: rebase -i (pick): [yaml/en] Add more resources (#1666) ed8ddf2 HEAD@{4}: rebase -i (pick): pythonstatcomp spanish translation (#1748) 2e6c386 HEAD@{5}: rebase -i (start): checkout 02fb96d # Revertendo um commit específico $ git revert # remove OlaMundo.c $ git rm OlaMundo.c # Remove um arquivo de um sub-diretório $ git rm /caminho/para/o/arquivo/OlaMundo.c