Você está na página 1de 13

git init [cria um git]

git config --global //para receber essas cong todos os projetos


usar tecla q se o log ficar com : senao vc fica preso
git fetch --prune
[esse � para saber todas as atualizacoes de todas as branch do servido
para saber o estado atual de cada branch e o prune vai limpar as
configura�oes da maquina local de branches que nao existem mais]
git commit -m <mensagem>
git push -u [vai atualizar na master]
git log
[vc ve todos os commits anteriores mesmo se estiver em outra branch
]
git reset --hard HEAD^<revision>
git reset --hard HEAD hash [volta para o commit no passado]
git checkout hash
//para voltar
git checkout HEAD
git pull

gitk [grafica]
ls -la
ls [lista todos os arquivos]
cd pasta
cd ..
git status
git add arquivo
git add . [adiciona todos os arquivos]
git reset HEAD . [da untaged parece]
git clone (url) [clona todo o repositorio do github]
ou
git clone (url) (nome da pasta a ser criada)
git reset HEAD (arquivo) [para desadicinar os arquivos]
clear [limpa tela]
git reset HEAD . [tira todos ultimos modificados e recem staged]
git checkout -b nomebranch [cria uma branch] [acho que esse n copia
VERIFICAR
� para criar branch e j� dar checkout em seguida]
git checkout (nome da branch) [pega ultima atualiza�ao da branch]
git branch [mostra todas as branches q vc tem]
git diff [para ver a diferen�a de nos arquivos modifficados nao
comitados e o ultimo comitado]

ex
git checkout (branch1)
git merge (branch2)
git status
git log
git push origin master

2 volta para 1
brach_teste-> master

git fetch
[ele atualiza caso a do servidor github est� a frente da local]
depois vc d� um
git status [para ver a situa��o]
depois vc d� um
git pull [para atualizar a branch local, sincronizar]
git pull [traz as ultimas alteera�oes feitas mas s� se for em
arquivos diferentes senao da treta]

se vc apaga uma branch vc perde ela a nao ser quer vc tenha dado merge da�
d� para recuperar

o pull request faz no github site


e � para ser avaliado antes de fazer o merge na central
e nela fala se vai ter conflito ou nao fazendo a fazendo a pull request
pode se adicionar comentrios nas linha basta ir no +

git pull [parece que vera se faz um pull request em um outra branch
mas para ele linkar essa branch local com a do gitb=hub vc
tem que usar
git push origin testeBranch -u]

Resolvendo conflitos
ex dois na master
mario comita
e depois luigi

luigi fez add commit e push mas deu erro


luigi nao tinha a ultima versao
entao ele d� pull que vai dar erro novamente
e dentro do arquivo vai aparecer head foi vc que fez
e o outro comit, vc faz suas mofifica�oes

agora o luigi vai fazer novamente o commit


com o add e o commit
e push, deu certo

OUtra questao
pegar criou uma branch e quis voltar para master

para isso ele voltou para maaster com checkout


diz ele que vc git merge (nome da branch)

se esquecer o nome da branch basta dar git branch e aparecerao os


nomes delas

a� ele d� o merge
git merge nova-branch

e como nao precisamos mais da branch ele o deleta


git branch -d nova-branch
isso estando na master

DESFAZENDO OPERA�OES COM GIT CHECKOUT E GIT RESET


obs: se vc j� postou l� no github vc nao deveria usalos pq
vc apagaria alguns hitoricos l�
EXEMPLO- RETROCEDER MODIFICACAO DE ARQUIVO mesmo se salvo o arquivo
ele modifica um txt salva
da git status e ver qnao foi adicionado, apenas modificado
entao ele d�
git checkout a.txt[nome do arquivo]
e vc defaz tudo q fez
CUIDADO COM ESSA OPERA"CAO

OUTRA
ele modifica um arquivo e salva
e d� add
e vai dar unstage nele
dando
git reset HEAD <file> [HEAD quer dzer que estamos nele no momento]
git reset head a.txt

git log --decorate --online


[online vai mostrar os comites em uma linha e o decorate mostra aonde
est� a HEAD]

vamos voltar a HEAD um commit


git reset head^
se quisessemos 2 bastava adicional um circunflexo
git reset head^^

ele d� um git sttus e ver que a modifica�ao dele


nao esta staged

e depois deu o git log e o ultimo commit nao estava


a� ele deu add e commit e conseguiu commmitar o que ele tinha feito na
ultima

OUTRA
se vc quer que o git deixe de rastrear um arquivo basta
git rm --cached a.txt[nome do arquivo]

d� um git status
e fala que foi deletado que a.txt � um arquivo nao rastreado
e partir de agora ele nao ira nos commmitas mas no que ele estavapermanece

git checkout (hash)


s� HEAD que � mudado

git remote -v [mptra todos os remotos]

git push origin master


vai mandar para origin, nossa master

ou usar com atalho -u para sempre que dar o git push ir para mesmo
repositorio
git push -u origin masterg

OUTRA
dizer que config esse nivel do systema vai afetar
se for para todo mundo que usa o pc -- system
se � para nos e todo mundo do git --global
se for apenas para esse projeto usa -se --local

ele usa global para que todo mundo receba essas informa��es

git config --global user.name (nome)


git config --global user.email

para ver os dados


git config --global -l[l de list]

git config --global core.editor notepad [qual editor de texto ser� usado pelo
git]

atalha para quando vc modificou os arquivos que j� estao sendo rastre-


ados e vc fez modifica�oes sem fazer unstaged mas s�
para arquivos rastreados, n pode ter novos
que �
git commit -am "Mensagem" [a de add e m de mensagem]

tem q apertar "q" para sair de dentro de seu log

para voltar para um certo commit do log


vc nao perde os outros commits vc est� dando apenas uma olhadinha
nos outros commits
git checkout (hash)
mas para vc olhar outro vc tem de voltar para o estado atual
dos commits
se vc der um git commit vai ver que eles nao estao l�
mas vc nao os perdeu

o arquivo Readme.me serve para vc colocar a razao de seu projeto


instru�oes de instala�ao e ele tem sistema proprio de marca�ao
do github e vc pode modificar ele pela prataforma do github
na canetinha

Arquivo gitignorre
vc escolhe ao criar o repositorio
e tem varios padroes a serem ignorados
e tem UNity tbm hahahaha

vai come�ar mexer em uma nova questao vai l� e d� um


Git pull
para ficar atualizado

Qual comando voc� utilizou para criar o reposit�rio local?


git init

Quais comandos voc� utilizou para realizar seu primeiro commit?


git add .
git commit -m 'mensagem'

Qual comando voc� utilizou para conectar seu reposit�rio local com o github?
git remote add origin https://github.com/user/repo.git

Qual comando voc� utilizou para realizar seu primeiro envio de arquivos?
git push -u origin master

um commit funciona como um marco em nossa linha do tempo

OUTRO EXEMPLO
quando se quer fazer um merge da branch para master e ninguem
deu commit na master at� da o merge quer dizer que vc
est� fazendo um Merge do TIPO
FAST-FORWARD
depois de fazer isso vc pode eliminar a branch e quando vc
eliminar a branch vai parecer que todos commits da branch seriam
da master e o projeto seguindo normalmente

EX:vc precisa estar na master pois a partir dela que vamos fazer
o merge
a� vc d� o codigo com o nome da branch q vc quer fazer jun�ao com
a master
git merge nova-branch
o git vai dar a msg de fast-foward ou seja a jun�ao foi feita automaticamente
como senao existisse nova-branch
e o os commit da nova-branch vai para master

COMANDOs
git log --graph [ajuda a entender o prosseguimento dos commits]
git log --graph --online[para mostrar de forma simplificada]
para escluir uma branch
git branch -d nova-branch
para fazer consulta das branch
git branch
e asteristo indica aonde estamos

BRANCHES
RECURSIVE STRATEGY / CONFLITS
esse � o merge s� que com commits novos na master
gera um commit do tipo MERGE e ele tem dois pais sendo
eles um de cada branch

quando nao � mexido nos mesmos arquivos o git usa a RECURSIVE STRATEGY
merge[significa jun�ao das branches]

EX: tem um commit na master que a branch nao tem


a� o processo � o mesmo
vc vai para master
depois da merge, vai aparecer a msg recursive strategy
para indicar de nao foi de for direta como o fast-forword
mas repare que ele fez um ultimo commit de indicando que foi
feito um merge
Merge branch 'branch2'
depois ele deletou a branch2

OBS+++
quando vc d� git log e aparece ":" vc precisa dar enter para
aparecer tudo at� aparecer END e depois dar q para sair

a� tem os CONFLITS quando se mexe nos mesmo arquivos


quanto tenta fazer o merge
a� vc vai ter quer retirar as linhas de conflito garantindo que o merge seja
realizado com sucesso
a� sao gerados dos comitis um dizendo que foi realizado um merge
e outro com o merge propriamente dito

EX:vc mexe nos mesmos arquivos na masrter e na branch


e vai para master e da merge
mas vai dar erro
se fazer um log
vai ver q nada mudou
entao de um git status
e vai aparecer a msg
Unmerged files
e repare que vc est� num commit (master |MERGING)

ai vc vai nos arquivos e retiras as linhas


HEAD fala o estado atual
e a o outro da outra branch
a� vc resolve, retira e decide o q vai ficar
e d� add os files e da um commit
git commit -am "merge final"

QUERO VERIFICAR ISSO


++para realizar uma "nova branch que ja ter� uma copia imagino eu"
git branch nova branch

ISSUES

GITHUB ISSUES
-Rastreio de Bugs
-Sugestao de ferramenta(Features)

pelas issues conseguimos fazer um historico de todas altera��es


o que significa que conseguimos documentar passoa a passo
de o que realizamos para resolver bugs ou desenvolver novas ferr
amentas

Vc cria a issue e quando resolvida vc vai nela e comenta


o nome da commit que resolveu a issue
a� vc coloca "Mensagem" hash
e vc vai em Preview ao lado e vai ver que virou link o hash
ai vc comenta e fecha a issue

Adicionar sustenido no nome da commit #number q est� l�


"Mensagem #2"
e o github consegue fazer o rastreio

OBS++
se vc estrar em outra branch sem ser a master e da o git push
nao funciona pq ela est'a configurada para mandar a master
para mandar outra branch para o github
git push origin nova-branch

ISSUE e coloboradores da comunidade


GErenciamento de Issues com GIT
tem como comentar tanto na issue quanto no commit dessa issue
alando de modifica�oes ,erros,bugs
e se vc for no commit vc pode add um coment�rio indo no
"mais" ao lado da linha
e se vc voltar na issue vc vai ver que tem um icone de baloes
falando q tem discussao dentro dessa issue
a� vc vai l� e fala se ser� feito um commit disso

outro comando � um commit na issue fechando a issue quando der push


git commit -m "altera�ao final da pagina de contato closes #2"
aparece simbolo vermelho l� no github

LABELS EM ISSUES
vc vai issues->labs
que pode ser bus, duplicac�o etc,pedir ajuda
e vc pode criar at� uma nova labeldo seu jeito
a� vc entra na issue e do lado direito coloca a label
caso vc queira fazer algum filtro bastra entrar em issues
e clicar em setinha labels para fazer filtro de um tipo

ISSUE COM CITACAO DE NOME E EMAIL


como a pessoa criou a issue ele vai receber todas modifica�oes dela
por email tamb�m
e vc tamb�m pode responder o e-mail que vai automaticamente para
o historico da issue

o interessante tbm � vc marcar a pessoa com @---- l� nos comments


da issue pq a pessoa vai receber no pr�prio e-mail

ASSINATURA E ENCERRAMENTO DE ISSUES


entrando em uma issue do lado direito vai ter o assgnees com as
pessoas que estao acompanhando a issue vai aparecer quando clica as
pessoas que comentaram, para colocar outras basta digitar nome

ISSUES E MILESTONES
milestone � um agregador de issues
a gente pode pegar as issues e criar uma milestone para colocar uma data para
corrigir esses erros
a� vc entra em cada issue e vai no lado direito e colocque a milestone
e vai aparecer uma plaquinha nele

vc pode colocolar tbm fixes no final da mensagem de coment�rio


para falar que vc resolveu um bug da issue #number e ele vai
fechar a issue assim tbm

INTERESSANTE
quando vc ve q deu certo,ficou bom o servi�o para fechar uma issue
vc comenta dois pontos e escolhe um emooji

GIT e GITHUB intermedi�rio

GIT- CHECKOUT & RESET


cuidado
vc podera remover um comit, remover arquivo da stage e nao rastrear
mais um arquivo
tome cuidado para que essa branch que vc est� alterando nao tenha
sido publicada enviada para o github

mesmo que vc tenha salvado um arquivo e vc nao deu staged tem como vc voltar
no comit anterior perdendo o que foi salvo
a� vc consegue retirar o arquivo
pela git checkout a.txt
ou seja mesmo que vc tenha salvo o arquivo vc poderia perder os dados

agora se vc j� fez o staged tem como retirar tbm


basta
git reser HEAD (file)

para vc mostrar log de form a simplificada


git log --decorate --online
mostrar head em uma linha

QUERO ENTENDER DIREITO


se voltarmos a head passos atras os comites podem ser descartados
git reset head^
numero de circunflexos volta o numero de vezes
aqui nao foi apagado os commits

se vc nao quiser que o git rastrei mais um arquivo a partir de agora


git rm --cached a.txt

aqui com a op�ao hard vc apaga tudo dentro do commits


CUIDADO

git reset --hard (hash)[para aonde se quer voltar]

FORK
-copia de um repositorio
-experimentar altera�oes
vc nao tem acesso por isso pode baixar e fazer altera�oes
-mas vc pode sugerir sugestoes usando o fork
-colaborar com projetos(parte do processo)

upstream � o repositorio principal do github


a coia fork e a principal de terceiros sao assincronos
� apenas uma foto
mas as vezes a gente quer deixar o nosso local atualizado
vc clona o fork para o local e depois
mas o deles n � atualizado
a� vc usa um
git add remote upstream
com o principal dentro do local

resumindo
-git add remote upstream
-git pull upstream (master) [para atualizar]
-git push origin master
s� vc clicar em fork nos dos outros
e clonar depois para um local na sua maquina

REBASE -

- com ele podemos modificar o historico do nosso projeto


DA PARA FAZER MUITA COISA AQUI O TREM � SERIO
-Modificar Project History
-Alterar ordem de commits
-Unir commits
-Modificar mensagem dos commits

COMMITS permitem contar uma historia

A MERGE nao altera(destroi)


a linha do tempo de uma branch
podemos ver os commits anteriores

Merge pode poluir a linha do tempo de


uma branch!

REBAE permite manter um historico limpo


rebase e merge fazem a mesma coisa mas tem caracteristicas diferentes

o REBASE permite sempre ter um merge do tipo fast-forward

S� que no REBASE os commits sao refeitos novos hashsou seja nunca


fa�a base se vc estiver compartilhando ou repositorio estiver public
pq todo mundo vai ter conflito perdendo tbm o seu hist�rico
fa�a se s� vc estiver usando

o legal do merge � que d� para rastrear tudo , o problema � quando


se tem muitas ramifica�oes poluindo

quando fazemos o rebase


entramos dentro da branch diferente da merge
git rebase master

ai depois d� o merge e vai ser um fast-forward


e quando olhar o grath vai parecer que nunca existiu uma branch
tudo dentro da master

mas para conflito na rebase � diferente


vc vai l� tirar as marca�oes , salva
git add .
git rebase --continue
depois vai para master
e dar o merge

outras op�oes
git rebase --skip
--abort

REBASE INTERATIVE
para mudar a mensagem de um commit
vc precisa ir no pai
git rebase -i (hash do pai)
NAO VI ISSO MTO BEM NAO � para ser usado mesmo

PULL REQUEST
-Enviar altera�oes para serem incorporadas
a um projeto
-discussoes sobre o codigo
-integrar c�digo revisado ao projeto

pelo fork
vc faz altera�oes do local que foi copiado da forque e
vc atualiza o seu fork fazendo um pull request a partir
dele
o legal disso e que assim q ele pe�a para vc fazer modificac�es
vc pode dar um push no fork que vai atualizar o pull request

REVISANDO O FLUXO
-fork
-git clone
-git checkout -b, git add, git commit
-git push
-Pull request
-git pull upstream, git push

se vc for colaborar com repositorios de terceiros


verifique que ele est� apto para dar merge
aparece no pull request que vc for fazer
pq o dono do repositorio nao vai ficar gastando tempo
com coisas aerradas que nos fizemos
acontece que quando damos o pull request o github
associa nossa branch nova no principal
agora o dono tem acesse a nossa branch com todos comits
que nos realizamos

a� ensina vc sendo o dono do repositorio


vai aparecer um pull request
l� em cima e vc clica e aparece quem fez
a� vc pode clicar ver arquivos criados
fazer coment�rios a� vc volta para
o pull requeste e d� o merge se quiser
e se vc comentar closes #1
a issue vai ser automaticamente fechada nos comentarios da merge

O que acontece se houver conflito

git pull upstream master [atualiza com a master do upstream]

REPETIR SE��O 7

SE��O 8----------------------------------------------

FLUXO DE COLABORA��O DE C�DIGO

chamadode SINGLE REPOSITORY WORKFLOW conhecido tbm


como (GITHUB WORKFLOW)
� um fluxo de trabalho simplificado
corta alguns passos desse fluxo ajudando aos desenvolvedores
a entenderem melhor o que cada um est� fazendo
no git workflow cada colaborador(dev) � um colaborador cadastrado
por isso cada colaborador pode fazer o clone direto do repositorio
central e nao precisa do intermediario que o seu proprio fork
assim todos dev vao ter acesso assim que alguem der o pull

a strategia de organizar esse trabalho � a


FEATURE BRANCH STRATEGY
todo mundo pode realizar commit na mesma branch colaborando

REVISANDO FLUXO
-git clone
-git checkout -b , git add, git commit
-git push
-Pull request
-git pull[para atualizar as branches]

apos o merge como dev


vc vai na sua master e
d� o git pull para atualizar tudo

ACESSO RESTRITO AO MERGE

basta ir nos setting do projetodepois branch-> e marcar no minimo


protect this branch e require pull request review before merging
e vc pode marcar tbm os administradores a serem seujeitos a essas
op�oes

Ex: ele tentou dar merge na local e consegiu mas quando da push para
upstream d� errado

para solucionar o problema ele deu um


git reset --hard head^
criou uma nova branch
e add . [os arquivos de antes] e commit
ou git add . && git commit -m "cria�ao de dica"

PROCESSO DE REVIEW
aqui ele deu push da branch l� mas falou que precisava de review
e fez o pedido do pull request
aqundo � aprovada
tanto ele quanto outro pode fazer o merge

COM CONFLITOS

git branch -a[mostra todas as branhces, locais e remotas]


quando vc ve que tem algume branch que vc n tem na local
basta criar uma nova com mesmo nome que ela
j� fica amarrada

Vc foi ajudar alguem na parte do seu projeto em uma branch criada


a der conflito quando for commitar
De um rebase que � muito melhor que criar uma uma nova branch dentro
dessa branch para fazer o merge e ajuda no historico de
commits para nao ficar bagun�ado

52 (nao entendi mto bem)


git pull --rebase
vai gerar um conflito
mexe no arquivo de conflito
e d� um
git add . && git rebase --continue
depois
o git push

GIT STASH
-as vezes precisamos parar o que estamos fazendo
para resolver outra coisa como corrigir algum bug

primeiro temos de criar uma branch


git checkout -b wip
[wip de working in progress]

O STASH permite pegarmos as modifica�oes que fizemos na stage ou no


projeto e colocar em uma area temporaria e quando precisar vc tira
dessa �rea tempor�ria, funciona como uma pilha
VC d� git stash
quando vc coloca arquivos na stage mas nao comita
isso ir� salva los e retiralos no momento

e o comando
git stash apply traz os arquivos devolta

para vc dar o nome


git stash save "Mensagem"

e quando passamos substitui a msg padrao


quando usamos o comando seguinte para list�-los
git stash list

quando vc faz um stash e vc faz uma modifica�ao pode dar conflito


mas se der conflito ser� abortada a a�ao o git nao faz merge
com stash

git stash show --patch


mostra o que foi mudado

a� para trazer usa


git stash pop
se vc tiver mexido no mesmo arquivo vai d� conflito

EX:conflitou a� ele foi l� e deu git checkout [nome do arquivo]


a� se der o git stash pop vai funcionar normalmente
isso se vc quiser perder o que vc fez

EX:Agora d� conflito mas queremos manter as duas por isso se comita


o que est� na corrente
ele d� o stash
depois modifica o mesmo arquivo
d� o git stash apply mas d� conflito
para resolver ele d�
um commit e depois um git stash aplly
vai dar comflito a� vc resolve no arquivo
mas parece que se eles foram rastreados no minimo uma vez elas
entram no stash

com o commando
git stash --keep-index
ele coloca na stash apenas os arquivos modificados
a� vai contunar os arquivos que estavam na stage

STASH ANTES do PULL

um jeito legal de depois de fazer o pull de quando der complito


� vc fazer o stash das modifica�oes que vc fez e depois vc trazer elas
assim que quiser

git stash
git pull
git stash pop

SUBCOMANDOS DO STASH

git stash list


mostra tods wip salvos
na lista mostra o ultimo commit antes de fazer o stash

git stash drop (stash@{1})


ele tira da pilha do stash pelo nome

git stash drop


ele retira o que est� no topo

git stash pop


ele faz o applay e drop ao mesmo tempo

git stash show


vai mostrar altera�oes que tem haver com o ultimo stash

git stash show --patch


para ver quais altera�oes
muito parecido com diff

git stash list --stat


para ver todas altera�oes da pilha

git stash -u
inclui at� os arquivos nao rastreados

Você também pode gostar