Com o boom de tecnologia, torna-se inevitável para qualquer pessoa de TI trabalhar em vários dados simultaneamente e seus dados estão em constante evolução com o tempo. Também é essencial rastrear todas as alterações nos dados e estar preparado para desfazer ou reverter qualquer alteração indesejada quando necessário.
Devo confessar, versionar meus dados no Git me permite ser mais experimental no desenvolvimento do meu projeto. Se eu errar, sei que o git sempre tem uma maneira de desfazer e / ou reverter aquela versão do meu projeto para o jeito que era antes de eu estragar tudo. Cada A camada é projetada para permitir que as alterações de dados sejam revisadas e modificadas e / ou corrigidas antes de mover os dados no próximo estágio. Portanto, a seguir estão os erros que são abordados neste blog:
- Desativar arquivos / diretórios do índice
- Edite a última mensagem enviada
- Esqueceu algumas mudanças no último commit
- Descartar alterações locais
- Dados pessoais enviados ao repositório local
- Substituiu o último commit por um novo commit
- Cometeu os dados errados
- Volte ao meu antigo estado de projeto
- Recuperar uma filial local excluída
- Desfazer alterações feitas em um commit
- Deu um nome errado ao meu ramo
- Deseja reorganizar os registros do histórico antes de enviar para o remoto
- Alterações não relacionadas confirmadas em um único commit
- Alterar e-mail do autor em todos os commits em todos os branches
- Arquivos perdidos e encontrados
- Esqueci qual branch tem meu commit-id
- Excluir um commit do histórico
- Empurrou um ramo errado para o controle remoto
Desativar arquivos / diretórios do índice
Ao adicionar e / ou modificar arquivos, você geralmente tende a usar o comportamento padrão do comando 'git add', que é adicionar todos os arquivos e diretórios ao índice.Muitas vezes você sente a necessidade de remover o estágio de certos arquivos ou modificá-los uma última vez antes de enviá-los.
Sintaxe: git reset
Remover o teste de arquivos da área de índice dá a você outra chance de trabalhar novamente em seus dados antes de se comprometer com um repositório local.
Edite a última mensagem enviada
Comando: git commit --amend
Você pode editar a última mensagem de confirmação sem criar uma nova. Para listar os logs de commit, eu defini um alias ‘hist’:
Comando: git config --global alias.hist 'log --pretty = format: '% C (amarelo)% h% Creset% ad | % C (verde)% s% Creset% C (vermelho)% d% Creset% C (azul) [% an] '--graph --decorate --date = short'x
Não altere a mensagem de commit que já foi enviada para um repositório remoto e compartilhada com outros, pois isso tornaria o histórico de commit anterior inválido e, portanto, qualquer trabalho baseado nisso pode ser afetado.
Esqueceu algumas mudanças no último commit
Digamos que você tenha se esquecido de fazer algumas modificações e já tenha confirmado seu snapshot, também não quer fazer outro commit para destacar seu erro.
Comando: git commit --amend
Eu destaquei como o sha-1 id do objeto de confirmação recente foi recriado e alterado. Eu fingi ter feito um único commit combinando ambas as mudanças em uma.
Descartar alterações locais
Então, aqui está um caso em que modifiquei o arquivo ‘README’ e o testei. Em seguida, modifiquei o mesmo arquivo uma segunda vez, mas percebi que não queria a segunda alteração.
Agora, não vou desfazer a alteração inteira manualmente, posso simplesmente puxar a versão em estágios do arquivo.
Sintaxe:
git checkout -
–Mudanças locais em um arquivo
git checkout -
–Mudanças locais em todos os arquivos no diretório & shy & shy
Comando: git checkout - README
Portanto, descartei minhas últimas alterações no arquivo e aceitei a versão preparada do arquivo. No próximo commit, apenas a versão testada do arquivo vai para o repositório local.
Dados pessoais enviados ao repositório local
Quero remover certos dados do repositório local, mas manter os arquivos no diretório de trabalho.
Sintaxe:
git reset - mixed HEAD ~
git reset --mixed
Comando: git reset - misturado HEAD ~ 1
HEAD ~ 1 indica um commit antes do commit recente apontado pelo branch atual HEAD.
Arquivos no instantâneo atual removidos do repositório local e da área de teste. Adicione os seguintes padrões no arquivo global .gitignore para excluí-los de serem rastreados pelo git.
vim ~ / .gitignore_global
# arquivos de senha #
*.passar
*.chave
* .passwd
Com isso, o commit que tinha o instantâneo dos arquivos de senha é removido e você obtém uma área de teste limpa. Meus arquivos ainda estão presentes em meu diretório de trabalho, mas não estão mais presentes no repositório local, também não serão enviados por push em um repositório remoto.
Cuidado: Se você os perder, o git não poderá recuperá-los para você, pois ele não sabe sobre isso.
Substitua o último commit por um novo commit
Sintaxe: git reset --soft [/ HEAD ~ n>]
A opção ‘–soft’ apenas remove os arquivos confirmados do repositório local enquanto eles ainda estão testados no Índice e você pode submetê-los novamente após uma revisão. é o sha-1 do instantâneo que você deseja remover do repositório local. onde n é o número de commits antes do commit HEAD
Comando :git reset --soft HEAD ~ 1
Modificar arquivos e prepará-los novamente
navegador db para análise sqlite
Comando: git commit -m 'Adicionando index.html e style.css'
Seu histórico de commits agora é:
Cometeu os dados errados
Sintaxe:
git reset --hard HEAD ~ n
–Redefinir o projeto para ‘n’ commits antes do último instantâneo confirmado
git reset --hard
–Redefina o projeto para um dado instantâneo de id de commit
Comando: git reset --hard HEAD ~ 1
O último commit e os arquivos corrompidos são removidos do repositório local, da área de teste e também do diretório de trabalho.
Cuidado: É um comando perigoso, pois você acaba perdendo arquivos no diretório de trabalho. Não recomendado em um repositório compartilhado remotamente.
Volte ao meu antigo estado de projeto
Você pode saltar para um estado mais antigo de seu projeto na história do tempo. Se você bagunçar na versão mais recente ou precisar de melhorias no código mais antigo, você pode querer criar outro branch a partir daquele instantâneo do projeto antigo para não atrapalhar seu trabalho atual. Vamos ver como:
uma. Liste o histórico do projeto e decida sobre o id de commit mais antigo, comando:vai hist
b. Crie outro branch fora do ID do commit:
git checkout -b old-state e7aa9a5
c. Continue trabalhando no código e depois mescle / rebase com o branch 'mestre'.
Recuperar uma filial local excluída
É possível regenerar o trabalho perdido em uma ramificação de referência. Digamos, eu excluí o branch ‘old_code’ sem fundir com o branch principal e perdi o trabalho. E não, eu também não enviei o branch para um repositório remoto, e então? Bem, faça o rastreamento e mantenha uma entrada de diário de todas as alterações feitas em cada referência, vamos ver o meu:vá reflog
Então, HEAD @ {2} é o ponteiro quando mudei para o branch ‘old_code’, vamos recuperar isso:
Sintaxe:git checkout -b
Comando:git checkout -b old_code HEAD @ {2}
Você deve estar agora no branch 'old_code' com seu último trabalho no momento de sua criação.Além disso, o ponteiro 'reflog' em HEAD @ {1} foi o commit recente feito no branch 'old_code'. commit apenas execute o comando como:git reset --hard HEAD @ {1}.
Isso também restaura os arquivos modificados no diretório de trabalho.
Se você quiser saber em detalhes como este comando funciona e como você pode gerenciar as entradas de ‘reflog’, você pode também ler meu post anterior sobrerecuperando o branch excluído do git reflog.
Desfazer alterações feitas em um commit
irreverteré usado para registrar alguns novos commits para reverter o efeito de alguns commits anteriores.
Sintaxe: git revert
A partir de meus registros de commits, gostaria de reverter a mudança feita no ID de commit destacado:
Comando: git revert 827bc0d
É melhor que você não reinicie '–hard' os commits compartilhados, mas em vez disso 'git revert' eles para preservar o histórico para que seja mais fácil para todos rastrear os logs do histórico para descobrir o que foi revertido, por quem e porque?
Você pode usar a mesma lógica de referir os commits relativos ao ponteiro HEAD ao invés de dar o id do commit, como em HEAD ~ 3 ou HEAD ~ 4 e assim por diante.
Deu um nome errado ao meu ramo
Você pode renomear um nome de filial local. Muitas vezes você pode querer renomear seu branch com base no problema no qual está trabalhando, sem passar pela dor de migrar todo o seu trabalho de um local para outro. Por exemplo, você pode estar no mesmo branch ou em um branch diferente e ainda ser capaz de renomear o branch desejado, conforme mostrado abaixo:
Sintaxe: git branch -m
Comando: git branch -m old_code old_ # 4920
Como você deve estar se perguntando, o git mantém um registro dessa renomeação? Sim, se refere às suas entradas de ‘reflog’, aqui está a minha:
Renomear uma ramificação não afetará sua ramificação de rastreamento remoto. Veremos na seção remota como substituir um branch no repositório remoto
valor padrão para char em java
Reorganize os registros do histórico antes de enviar para o remoto
Como eu gostaria de ter feito certos commits antes de outros e não teria feito alguns commits. Reorganize e edite interativamente os commits antigos para corrigir ou aprimorar o código de maneira eficaz
Sintaxe: git rebase -i
Comando: git rebase -i fb0a90e
- comece a rebasear os commits que foram feitos após o commit-id fb0a90e
Visite novamente o git rebase documentação para entender como um rebase ‘–interactive ou -i’ é diferente de um rebase regular.
Alterações não relacionadas confirmadas em um único commit
Nesse caso, você precisa dividir um commit oculto antigo em vários commits lógicos.
Sintaxe: git rebase -i
Comando: git rebase -i fb0a90e
No editor de rebase, você deve escolher e7aa9a5 commit id e alterá-lo para ‘editar’ em vez de ‘pick’.
Você agora estaria na versão do projeto do commit id-e7aa9a5. Primeiro, redefina o histórico de commit e a área de teste para o comando commit anterior:git reset HEAD ~ 1
Em segundo lugar, edite + estágio + confirme os arquivos individualmente
Comandos:
git add code && git commit -m 'Adicionando códigos iniciais'
git add newcode && git commit -m 'Adicionando novo código'
Terceiro, continue o rebase e termine.
Comando :git rebase --continue
Quarto, veja o histórico com commits adicionais.
Comando: vai hist
Alterar o e-mail do autor em todos os commits em todos os branches
Eu tenho versionado e submetido meus arquivos de projeto em git há muito tempo, mas até agora nunca me ocorreu que meu id de e-mail foi comprometido em meus logs de histórico de commits que são publicados até mesmo em repositórios remotos. Bem, isso pode acontecer com qualquer pessoa quando você definir inicialmente as configurações no arquivo “.gitconfig”. Para meu alívio, git pode reescrever as variáveis de ambiente que fornecemos ao criar um objeto de confirmação.
Primeiro eu pego a lista de ids de email para decidir os que desejo alterar:
Comando: git log --all --pretty = format: '% an% d'
–Isso imprime o nome do autor (refname / branch-name)
Em segundo lugar, eu examino cada commit em cada branch e reescrever o objeto commit com o novo id de e-mail
Comando:
git filter-branch --env-filter '
se ['$ GIT_AUTHOR_NAME' = 'divya']
então
GIT_AUTHOR_EMAIL = 'divya@github.com'
estar
' -- --todos
Arquivos perdidos e encontrados
Suponha que você tenha perdido um determinado arquivo e não se lembre de seu nome, mas pode se lembrar de certas palavras do arquivo. Neste caso, você pode seguir estas etapas-
Passo 1: Liste todos os commits que já contiveram o instantâneo do arquivo com o padrão pesquisado
Comando :git rev-list --todos | xargs git grep -i 'timestamp'
Passo 2 : Crie um novo branch ‘lost-found’ a partir deste commit-id destacado
Sintaxe: git checkout -b lost-found d8c6a76a6dcb1fc6e8c3f6b097e1bd07e7cd328f
Esqueci qual branch tem meu commit-id
Às vezes, depois de detectar um ID de commit cheio de erros, você também pode querer saber todos os branches que têm esse commit para que possa consertar todos. Verificar o histórico de cada filial não é muito prático em um grande projeto com várias filiais.
Um commit incorreto feito em meu aplicativo de construção de navegação uma vez quebrei o código, foi quando usei o Comando ‘git bisect’ para detectar o ID de confirmação que estava incorreto seguido pelocomando:git branch --contains
para listar os branches com aquele commit ruim.
Então, agora eu conheço todos os branches que ainda têm o commit inválido, eu poderia reverter ou redefinir este changeset.
Excluir um commit do histórico
Às vezes, sinto a necessidade de simplesmente apagar um commit da história e não deixar nenhum rastro dele. Eu não recomendo que você tente esta proeza em um branch compartilhado, mas apenas em seu branch local.
Sintaxe: git rebase -i
Comando :git rebase -i 93859d8
No editor de rebase-> substitua ‘edit’ por ‘drop’ para o ID de commit destacado: 69f4813
o que é chef em devops
Em alguns casos, esta reescrita pode resultar em conflitos. Você deve resolver os conflitos e prosseguir.
Atenção : Este é um comando perigoso, pois reescreve o histórico e pode perder dados. Tal ramificação difere de sua contraparte remota e terá que ser empurrado com o--força
ou--forçar com aluguel
opção.
Empurrou um ramo errado para o controle remoto
Agora, aqui está o que eu quero fazer - quero excluir um filial remota e também parar de rastreá-lo em minha filial local.git push
'Comando quando usado com o--excluir
opção exclui o branch remoto Então, é assim que obtenho a cópia local do projeto clonado -
git clone https://github.com/greets/myProj.git
cd myProj
Uma vez, o branch remoto é excluído, outros no repositório compartilhado devem atualizar e atualizar suas referências remotas com o--ameixa seca
opção para excluir as referências de objetos ausentes:git fetch --prune -v origin
Neste post, mencionei alguns dos erros comuns ou mudanças que o git pode ajudar a corrigir. Cada código é único e desenvolvido à sua maneira, portanto, também existem diferentes maneiras de abordar e corrigir um problema. Você sempre pode se referir ao oficial documentação git para entender como vários comandos git protegem seu código-fonte e como utilizar os comandos da melhor maneira possível.
Agora que você entendeu os erros comuns do Git, verifique este pela Edureka, uma empresa de aprendizagem online confiável com uma rede de mais de 250.000 alunos satisfeitos espalhados por todo o mundo. O curso Edureka DevOps Certification Training ajuda os alunos a entender o que é DevOps e ganhar experiência em vários processos e ferramentas DevOps, como Puppet, Jenkins, Nagios, Ansible, Chef, Saltstack e GIT para automatizar várias etapas no SDLC.
Tem alguma questão para nós? Mencione isso na seção de comentários deste “erros comuns do Git” e entraremos em contato com você