Para trabalhar com git no windows faça o download do git bash e do emulador de console cmder.
- Configure o seu nome e email no git
git config --global user.name "Yuri Alves"git config --global user.email "yurialves2@gmail.com"
- Configuração para colorir algumas interações:
git config --global color.ui true
mkdir aulagit # Cria diretório
cd aulagit # Acessa o diretório
git init # Inicia repositório git e cria um diretório oculto (.git)
# Para deixar de trabalhar com o git basta apagar o diretório (.git)Cada arquivo adicionado ou modificado em um diretorio que trabalha com o versionamento git passa por 3 estagios.
- Estágio untracked file: Indica quais arquivos não estão fazendo parte do versionamento.
- Estágio changes to be commited: Indica quais arquivos foram adicionados no versionamento mas as mudanças não foram confirmadas e salvas.
- Estágio commited: Indica que não há mais nada para confirmar no versionamento, está tudo ok.
touch arquivo.txt # Criando novo arquivo
echo 'Olá, mundo!' >> arquivo.txt # Escrevendo no arquivo
git status # Mostrar status do arquivo.txt (estágio 1 - untracked)
git add arquivo.txt # Adiciona arquivo.txt ao versionamento (estágio 2)
git rm --cached arquivo.txt # Retorna estagio de arquivo.txt para untracked
git add . # Adiciona todo o diretorio atual e seus arquivos ao versionamento (estágio 2)
git commit -m "meu primeiro commit" # Confirma alterações fazendo commit (estágio 3)
git log # Mostra log de commit
- Status
Para saber o estagio atual dos arquivos existe o comando
git status
- Commit
Parametro -m significa mensagem. Commit = persistir mudanças, submeter alterações.
No contexto de ciência da computação e gerenciamento de dados, commit refere-se à ideia de fazer permanentes um conjunto de mudanças experimentais. Uma utilização popular está no fim de uma transação. Um commit é o ato de enviar. https://www.wikiwand.com/pt/Commit
O comando
git commitpode ser feito sem o parametro -m de mensagem. Assim que for executado, o git abrirá uma janela de texto para comentar o commit. Caso seja feita a alteração em mais de um arquivo, para 'commitar' todos de uma vez de o comando:git commit -a -m "mensagem"
- Log
git log # Log de commit
git log -p # Detalhes sobre o que foi alterado entre cada commit
git log -p -2 # Exibe apenas os dois ultimos logs
git log --stat # Estatisticas de log
git log --pretty=oneline # Exibe log em uma linha
git log --pretty=format:"%h - %an, %ar : %s" # Exibe log formatado de forma personalizada
git log --since=2.days
O arquivo .gitignore pode ser criado para especificar todos os arquivos que serão ignorados no versionamento git. Assim não serão mostrados os estagios destes arquivos e nem serão enviados na hora do push. Escreva o nome de cada arquivo que será ignorado em uma nova linha.
touch .gitignore
Um branch é como se fosse uma linha do tempo alternativa para o desenvolvimento do projeto. Ela pode se desenvolver em paralelo ao branch principal (master) e no futuro podem voltar a se fundir (merge) ou gerar novos galhos. O branch master é como se fosse um tronco de uma árvore e o que deriva dele são seus galhos. Geralmente são utilizados para o desenvolvimento de uma nova funcionalidade separadamente do projeto principal.
git branchgit checkout
git branch # Mostra qual o branch você está trabalhando - de inicio é o branch "master"
git checkout -b funcionalidade1 # Criação do branch funcionalidade1: git checkout -b <nome do branch>
git checkout funcionalidade1 # Alterna para o branch funcionalidade1
git checkout master # Alterna para branch masterPara Juntar dois branches novamente basta utilizar o comando git merge <nome do branch para fundir> ou git rebase <nome do branch para fundir>
git branch # Estou no branch funcionalidade1
git merge master # Fazer merge do branch funcionalidade1 com branch master.
git rebase funcionalidade1 # Fazer merge com commits ordenados
Se não houver commit em algum dos branches, será necessário adicionar um comentário para um novo commit após a junção das ramificações.
Rebase ordena ordem dos commits de ambos branches e nao geram um novo commit quando fundir os dois, apenas junta os commits
Resolvendo Conflitos: Pode ser que você tenha modificado arquivos em comum em ambos os branches. Neste caso haverá conflitos na hora do merge. Para saber quais arquivos estão em conflito basta usar git status e depois abrir estes arquivos para ver o que se pode fazer. Eles aparecem com o status unmerged paths.
Cada vez que é realizado um commit, ele passa a receber um hash da versão que pode ser verificado no log. Para voltar para uma versão anterior basta usar o comando git checkout.
git log # Exibe o log de commits
git checkout b7bad0e98c1eb0021bda565a092314f7fd8800af # git checkout <hash da versão>
# Agora a versão passa a ser a escolhida pelo hash obtido no log
# O comando git checkout tambem pode ser usado referenciando o nome do branch (ramificação)
git checkout master # Voltar para a ramificação master - o galho principal do projeto
git reset HEAD~1 # Volta um commit
git reset HEAD~1 --soft # Remove commit mas deixa arquivos modificados
git reset HEAD~1 --hard # Remove commit e arquivos que não existiam antestouch arquivo1.txt arquivo2.txt arquivo3.txt # Criando vários arquivos
git add . # Adicionando todos ao versionamento
git reset HEAD arquivo1.txt # Voltando apenas 1 arquivo para estágio untracked
git commit -m "Adicionei todos arquivos ao versionamento, menos 1"push, pull, clone,
Para gerar uma chave publica em sistemas unix-like, utilize o comando ssh-keygen.
Esta chave será útil para não precisar ficar digitando usuario e senha sempre que você quizer faer um push em sua conta do github.
ssh-keygen # Gerar chave
cd ~/.ssh/ # Acessar Diretório onde a chave foi salva - Nunca compartilhe as chaves privadas
cat id_rsa.pub # Exibir conteúdo ca chave no terminalCopie o conteúdo da chave e salve em sua conta no site do github. Acesse: github.com >> settings >> ssh and gpg keys >> new ssh key
Para criar um novo repositório no github basta criar/fazer login em sua conta, acessar a aba repositótios e clicar nobotão new. Logo depois serão informados os comandos básicos para digitar no computador local inicializando o repositorio e executando o primeiro push.
Push signifiga empurrar. É o comando que faz o upload dos arquivos locais para um repositório remoto Depois de criar um repositorio novo em minha conta github nomeado como 'repositorio-temporario', ter iniciado o repositorio localmente pelo comando 'git init' e feito os primeiros commits, é hora de configurar o repositorio remoto e fazer o push.
git remote add origin https://github.com/yuri8p/repositorio-temporario.git
git push -u origin master# Fazer push com outro branch
git checkout funcionalidade1
git push origin funcionalidade1Clonar um repositório é quando você encontra um repositório no site e deseja trazê-lo para seu computador local.
git clone https://github.com/yuri8p/repositorio-temporario.git # Clonar repositório
git clone https://github.com/yuri8p/repositorio-temporario.git aulagit # Clonar e Renomear
# Para ter outro branch remoto localmente é necessario criar localmente o branch e ligar ao branch remoto
git branch # Só foi clonado o branch master
git branch -a # Exibir todos os branches locais e remotos
git checkout -b funcionalidade1 origin/funcionalidade1 #Cria branch 'funcionalidade1' localmente com opção -b e faz link com branch remoto
git pull # Atualiza arquivos locais baixando do repozitorio remoto
git pull origin master # AtualizaO que épull request? Pull request é uma requisição para alterar um projeto. Quando você faz clone de um repositório que não pertence a você, não é possível fazer um push sem que o dono do repositório autorize. Para contribuir com o projeto é necessário submeter um pull request e esperar a aprovação do dono do repositório.
Versionamento semantico é uma forma organizada de gerar versões do software. Exemplo: (0.1.0), (1.0), (2.3.45).
Com a versão 0.1.0 podemos separar o versionamento em três partes: 0 = Major Version (primeiro zero). Não precisa manter compatibilidade entre as versões. Cada release pode ser um software totalmente novo. 1 = Minor Version ( versao dentro da versao). O software é o mesmo porem com implementação de alguma nova funcionalidade, compatibilidade pode ser mantida ou nao. 0 = Patch da Minor version (segundo zero) Patch de correção de bugs na minor version. A compatibilidade deve ser mantida a todo custo, apenas os bugs devem ser corrigidos e tudo tem que funcionar como antes.
git tag 0.1.0 # Gerar Tag de release
git tag -l # Listar todas as tags geradas
git push origin master --tags # Fazer release no github. "1 novo release"Um repositorio bare é um repositório que não serve para trabalho, tem função de servir. É usado para trabalhar remotamente porém com um repositório local.
# Entre no seu diretório raiz de trabalho
cd ~/CODES/ # Diretorio qualquer raiz
mkdir aulagit-bare # Criando diretorio que servirá de repositório
cd ~/CODES/aulagit-bare/ # Acessando diretorio
git init --bare # Inicializando repositorio com opção --bare
ls # Exibir subdiretórios gerados. São diferentes de um repositório comum de trabalho no git
# Agora entre no diretorio de trabalho com git para adicionar lugar remoto
cd ~/CODES/aulagit/
git remote add local ssh://localhost/home/yuri/CODES/aulagit-bare/
git push local master
# Observe que agora usamos outra palavra no lugar de origin (local) - poderia ser qualquer palavra
O deploy automatizado serve para que quando for dado o comando de push, automaticamente serão enviados os arquivos para o ambiente de produção.
cd ~/CODES/aulagit-bare/ # Entra no repositorio de bare
cd hooks # Entra no diretorio hooks
touch post-receive # Cria arquivo de post-receive
chmod +x post-receive # Dá permisão de execução para arquivo
mkdir meusite.com.br/ # Cria pasta meusite.com.br/ que será referenciada no arquivo post-receive
Conteúdo do arquivo post-receive:
#!/bin/sh
GIT_WORK_TREE=/home/yuri/CODES/meusite.com.br git checkout -f # Opção -f Para copiar todos arquivos exceto o diretotio (.git)- https://try.github.io/levels/1/challenges/1
- https://blog.da2k.com.br/2015/02/04/git-e-github-do-clone-ao-pull-request/
- https://pt.linkedin.com/pulse/git-em-15-minutos-maximo-henrique
-
github >> novo repositorio >> Repository name >> nomeDaPagina.github.io
-
git clone https://github.com/yuri8p/yuri8p.github.io.git
-
- long haul theme
- fork
-
Alterar no pc
- git add -A
- git commit -m "Alterei tal coisa"
- git push origin master
- user
- senha