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
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
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
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
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
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
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
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.
Ou também pode acontecer o erro:
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
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
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
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
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
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
Assinar:
Postagens (Atom)
