Mostrando postagens com marcador git. Mostrar todas as postagens
Mostrando postagens com marcador git. Mostrar todas as postagens

quinta-feira, 30 de junho de 2016

BitBucket - Authentication failed

I got this error trying to run the "git pull" command in a project on BitBucket:

C:\work\Dropbox\workspaces\ws-ionic\myapp>git pull
Password for 'https://adrianoschmidt@bitbucket.org':
remote: Invalid username or password. If you log in via a third party service you must ensure you have an account password set in your account profile.
fatal: Authentication failed for 'https://adrianoschmidt@bitbucket.org/myuser/myapp.git/'

In order to solve this problem I've accessed https://id.atlassian.com/login and I've clicked on "Forgot your password?"

After resetting my password, everything started to work normally again :D

Best regards,
Adriano Schmidt

sexta-feira, 22 de maio de 2015

Como dividir um commit do git em dois

Fala galera, segue o passo-a-passo para você pegar um commit e dividi-lo em dois.

Dê esse comando para permitir alterar o último commit:
git rebase -i HEAD~

Dê esse comando para colocar todos os arquivos na cor vermelha, assim eles estarão disponíveis para você fazer o que quiser:
git reset HEAD~

Agora dê um add em cada arquivo que você quer que fique no seu primeiro commit
git add src/main/java/br/com/localhost8080/teste/Arquivo01.java
git add src/main/java/br/com/localhost8080/teste/Arquivo02.java
git add src/main/java/br/com/localhost8080/teste/Arquivo03.java

Faça um commit dos arquivos adicionados:
git commit -m "mensagem do commit 01"

Agora faça commit do restante dos arquivos:
git add .

Faça o segundo commit:
git commit -m "mensagem do commit 02"

Finalize o rebase:
git rebase --continue

Pronto. Agora você já pode fazer um push ou o que desejar.

Fonte: http://stackoverflow.com/questions/6217156/break-a-previous-commit-into-multiple-commits

Abraçooo!
Adriano Schmidt

segunda-feira, 11 de maio de 2015

Git - reset/revert arquivo

Fala galera,

Hoje fiz um commit e coloquei nele um arquivo q não deveria ter colocado.

Então para voltar o para uma versão antiga rodei o comando:
git checkout origin/master src/main/java/br/com/localhost8080/test01/MinhaClasse.java

Explicando o comando:
git checkout <branch ou commit onde está a versão que você quer restaurar> <caminho do arquivo>

Como eu quis alterar um commit, depois eu dei um "git commit --amend" e fiz o push novamente.

Mais detalhes em:
http://schacon.github.io/git/git-checkout.html

Abraço!
Adriano Schmidt

segunda-feira, 23 de fevereiro de 2015

Trabalhando com tags no Git

Referência básica para trabalhar com tags:

Para listar as tags no git:
git tag

Para listar as tags a partir de um filtro:
git tag -l 'v1.0*'

Para criar uma tag:
git tag -a <nome da tag> -m "<mensagem opcional>"
git tag -a v1.0.2 -m "entrega realizada com a funcionalidade X"

Para exibir uma tag:
git show v1.0.2

Para fazer push de uma tag:
git push origin v.1.0.2

Para fazer push de todas as tags:
git push origin --tags

Para deletar uma tag:
git tag -d v1.0.2

Para fazer push da deleção da tag:
git push origin :refs/tags/v.1.0.2

Para criar uma tag de um commit antigo:
git tag -a v.1.0.2 -m "entrega da funcionalidade X" <id_do_commit>

Mais em:
http://git-scm.com/book/en/v2/Git-Basics-Tagging
http://git-scm.com/docs/git-tag

Vaaleu!!
Adriano Schmidt

quinta-feira, 19 de fevereiro de 2015

git cherry-pick

Fala galera \o)

Você tem um commit perdido no tempo em algum branch do seu projeto... aquele commit resolvia um bug e você gostaria de aplicá-lo em sua master... seria tão legal se fosse possível simplesmente pegar as alterações daquele commit e aplicar na master, não seria? Pois saiba que é possível :D

O git tem o comando cherry-pick... ele pega as alterações de um commit e aplica em algum lugar.

Passo 1) Identifique o ID do commit que voce quer resgatar. Ex: 25210a9e67b0d77ee54ee67d9e106175c9285f18
Passo 2) Estando na master ou onde você quer aplicar o commit, rode o commando: git cherry-pick 25210a9e67b0d77ee54ee67d9e106175c9285f18
Passo 3) Dê um: git status
Passo 4) Caso apareçam conflitos, resolva-os.
Passo 5) Dê um: git add .
Passo 6) Dê um: git cherry-pick --continue
Passo 7) Confira se está tudo OK com um: git status
Passo 8) Faça um push: git push

Pronto, resolvido :D

Agradeço ao meu brother Alfredo André Zipperer que tem me feito subir uns 3 levels nas skills de git \o)

Valeu!
Adriano Schmidt

Alterar autor commit git

Para alterar o autor do seu último commit no Git basta fazer:

git commit --amend --author "Novo nome <email@email.com>"

Para alterar o nome e email em todos os commits de uma determinada pessoa é só fazer assim:

git filter-branch -f --commit-filter 'if [ "$GIT_AUTHOR_NAME" = "Adriano Ximit" ];
then export GIT_AUTHOR_NAME="Adriano Schmidt"; export GIT_AUTHOR_EMAIL=adriano@localhost8080.com.br;
fi; git commit-tree "$@"'

E assim também (pois caso contrário você só alterou o autor, mas o commiter não):

git filter-branch -f --commit-filter 'if [ "$GIT_COMMITTER_NAME" = "Adriano Ximit" ];
then export GIT_COMMITTER_NAME="Adriano Schmidt"; export GIT_COMMITTER_EMAIL=adriano@localhost8080.com.br;
fi; git commit-tree "$@"'

Depois de alterar você tem que dar um push... provavelmente com um --force

git push --force

Fontes:
http://stackoverflow.com/questions/750172/change-the-author-of-a-commit-in-git
http://stackoverflow.com/questions/4493936/git-could-i-change-my-name-and-surname-in-all-previous-commits

Abraço!!
Adriano Schmidt

quinta-feira, 5 de fevereiro de 2015

The change could not be merged due to a path conflict

Estou em um projeto que usa o Gerrit como revisor de código, é muito bom!!

E ao revisar e aprovar um commit deu o erro abaixo pois outro commit foi aprovado antes e deu conflito já que os dois commits mexeram na mesma linha de um arquivo.

Code Review - Error
The change could not be merged due to a path conflict.
Please rebase the change locally and upload the rebased commit for review.

Ou também pode acontecer o erro:

The change could not be rebased due to a path conflict during merge.

Para resolver você tem que fazer um rebase localmente e resolver os conflitos.

Passo 1) git fetch origin <nome_da_branch>
Passo 2) git fetch <url> && git checkout FETCH_HEAD (esse comando você pega no próprio gerrit)
Passo 3) git rebase origin/<nome_da_branch>
Passo 4) git status (ao rodar esse comando vai mostrar os arquivos em conflito, resolva os conflitos abrindo os arquivos e ajustando o que for necessário)
Passo 5) git add .
Passo 6) git rebase --continue
Passo 7) git push origin HEAD:refs/for/<nome_da_branch> (esse é o push normal quando você manda algo para o Gerrit)
Passo 8) git checkout <nome_da_branch> (apenas para voltar a sua branch e poder voltar a trabalhar)


Se o rebase for muito grande você pode fazer um cherry-pick


Para uma explicação mais detalhada recomendo a leitura desse artigo:
http://www.mediawiki.org/wiki/Gerrit/resolve_conflict
Porém, nesse artigo é usado o git-review para fazer o fetch/checkout (Passo 2) e o push (Passo 7). Ignore essa parte e faça conforme eu mostrei.

Para estudar sobre o rebase: http://git-scm.com/book/pt-br/v1/Ramifica%C3%A7%C3%A3o-Branching-no-Git-Rebasing

Para estudar sobre o Gerrit: https://code.google.com/p/gerrit/

Abraço!
Adriano Schmidt

sexta-feira, 30 de janeiro de 2015

Quebra de linha no GIT

Opa : )

No projeto que estou tem arquivos com quebra de linha CRLF (\r\n que é o padrão do Windows) e outros com LF (\n que é o padrão do linux)..

E o Git faz uma conversão dos caracteres de quebra de linha no momento que você adiciona o arquivo ao index (git add)

Então tenho que alterar a propriedade autocrlf no git dependendo do arquivo que vou mexer.. para que seja feita a conversão de quebra de linha de forma adequada.

Os comando que eu uso são esses:

Para arquivos com CRLF:
git config --global --unset core.autocrlf && git config --global --add core.autocrlf true
Para arquivos com LF
git config --global --unset core.autocrlf && git config --global --add core.autocrlf false

Para entender melhor: http://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration#Formatting-and-Whitespace

Abraço!
Adriano Schmidt

segunda-feira, 17 de novembro de 2014

Cuidados com o GIT

Fala pessoal,

Em um projeto nosso foi commitado um arquivo chamado .factorypath o que fez com que aconteceu um erro na máquina de outro desenvolvedor que gastou um tempinho até descobrir o problema.

Um dos motivos foi que esse arquivo não estava no .gitinore, outro motivo foi que o primeiro desenvolvedor não verificou que estava commitando algo que ele não mexeu, outro motivo foi que o segundo desenvolvedor não verificou o que estava baixando.

Então, enviei um e-mail para a equipe de desenvolvimento dando 3 dicas sobre Git para evitarmos problemas:

1) Usem adequadamente o .gitignore, sempre coloquem nele tudo que não deve ser commitado. Coloquei no github um exemplo de .gitinore que deve estar na raiz do projeto. Lembrando que cada projeto tem suas peculiaridades e pode ser um pouco diferente. https://gist.github.com/adrianoschmidt/9ad13b49b702168e4bf8

2) Usem o Git Command Line. O plugin do eclipse é legal, ajuda muito, mas tente usá-lo para coisas simples como commit e push. Se for fazer um merge, reset, stash ou coisas que saem do que você faz com frequência e que você não tem certeza que o plugin do eclipse vai funcionar 100%, use a linha de comando.

3) Tome cuidado! Não commite sem antes olhar o que você está commitando, às vezes você mexeu sem querer num arquivo e não deveria subir ele, às vezes você deu um CTRL+SHIFT+F num arquivo inteiro e no projeto não podia fazer isso. Principalmente se é a primeira vez que você está trabalhando no projeto ou se fez alguma grande alteração, tome muito cuidado. Quando for a primeira vez que commitar num projeto, ou quando fizer grandes alterações ou merges, acesse o git.supero.com.br e verifiquem se o que vocês fizeram está lá certinho, se não desfez algo que outra pessoa fez ou algo assim.


É isso pessoal. Pequenas ações podem evitar grandes problemas : )

Abraço!
Adriano Schmidt

sábado, 11 de outubro de 2014

Alterar usuário/senha/url no GIT

Para alterar usuário ou senha de projeto no GIT basta seguir os seguinte passos:

Acesse pelo prompt de comandos a pasta do seu projeto.

Rode o comando abaixo para ver o usuário utilizado:

$ git config --get remote.origin.url
http://AdrianoSchmidt:minhasenha@git.localhost8080.com.br/git/projeto/projeto.git

Rode o comando abaixo para remover o usuário e senha (na verdade remove a URL inteira)

$ git config --unset remote.origin.url

Rode o primeiro comando novamente e veja que não existe mais valor para essa variável

$ git config --get remote.origin.url

Rode o comando abaixo atualizando o usuário ou senha:

$ git config --add remote.origin.url http://AdrianoSchmidt:novasenha@git.localhost8080.com.br/git/projeto/projeto.git

Verifique novamente e veja se está como desejado:

$ git config --get remote.origin.url
http://AdrianoSchmidt:novasenha@git.localhost8080.com.br/git/projeto/projeto.git




Ou rode o comando abaixo e edite direto a propriedade:

$ git config --edit



Abraços!
Adriano Schmidt

quarta-feira, 18 de junho de 2014

Trabalhando com 2 repositórios Git

Pessoal.. temos um repositório Git na minha empresa e todos os desenvolvedores fazem commit e push lá. E de tempos em tempos fazemos o push desses fontes para o repositório Git que fica no nosso cliente.

Vou explicar uma estratégia simples e comumente usada nesse cenário.

Com essa estratégia que vou explicar você mantém o histórico de commits e permite a realização de merges caso outras pessoas commitem no mesmo projeto no repositório do cliente.

Seguinte:

No Git, cada commit tem um id.. que é um hash único...

Quando você tem 2 repositórios, um commit deve ter o mesmo id nos 2 repositórios...

O histórico de commits de um, será o mesmo no outro... geralmente é muito importante manter o histórico dos commits...

Para isso, você adiciona dois remotes no seu projeto (no nosso caso era só adicionar o segundo, já que o primeiro já tínhamos)

git remote add origin http://www.minhaempresa.com.br/git/projeto.git
git remote add cliente http://www.meucliente.com.br/git/projeto.git

Depois é só você escolher onde quer fazer push

git push origin master

ou

git push cliente master

Você pode até dar um git config e definir qual dos dois remotes é o padrão para quando você digitar apenas "git push" ele saber qual usar.

É isso!

Abraços!
Adriano Schmidt