Eu descarto acidentalmente minhas alterações em arquivos na minha árvore de trabalho local via git checkout. Os arquivos não são testados no momento. É possível "desfazer" este checkout?
Eu descarto acidentalmente minhas alterações em arquivos na minha árvore de trabalho local via git checkout. Os arquivos não são testados no momento. É possível "desfazer" este checkout?
Respostas:
Acredito que se um arquivo for modificado, mas ainda não foi adicionado (em etapas), é puramente "privado".
Significando que não pode ser restaurado pelo GIT se substituído pelo índice ou pela versão HEAD (a menos que você tenha uma cópia do seu trabalho atual em algum lugar). "
Um conteúdo "privado" é apenas visível no seu diretório atual, mas não é registrado de forma alguma no Git.
git checkout --), espero que seja capaz de desfazer essa operação, talvez através do reflog. Essa é uma expectativa errada?
git checkout folders/subfolders/filemas apertei enter por acidente depois de chegar foldere perdi todo o meu trabalho. / fica a 1 cm do teclado e alterno entre máquinas com diferentes layouts de teclado, de modo que geralmente há 10 a 15 minutos dos meus dedos se acostumando a novas posições. Difícil de acreditar em 2018 que o git lixeira de arquivos, mesmo dizendo no livro do git que o git faz o possível para não perder o trabalho.
Se você estiver usando um IDE "profissional", há boas chances de restaurar arquivos de um Histórico local. No Rubymine, por exemplo, você pode clicar com o botão direito do mouse nos arquivos e assistir a um histórico de alterações independentes das alterações do git, me salvou algumas vezes agora ^^
Se você estiver trabalhando em um editor como o Sublime Text e ainda tiver um arquivo em aberto, pressione ctrl + z e ele retornará ao estado que tinha antes do git checkout.
Infelizmente, suas alterações foram perdidas. Suas modificações particulares são simplesmente substituídas. A menos que você tenha git stashfeito o check-out antes ...
Veja do lado positivo: agora você pode implementar as coisas ainda melhor;)
Verifique o histórico local no seu IDE.
Desenvolvendo no OS X? Usando o Xcode? Você provavelmente está com sorte!
Conforme descrito em um comentário do qungu , o OS X mantém um histórico de versão salvo automaticamente, mesmo que você não esteja usando a máquina do tempo .
Então, se você desintegradas suas alterações locais unstaged com um descuidado git checkout ., aqui está como você pode , provavelmente, recuperar todo o seu trabalho.
Se alguém descobrir que esse thread destruiu algum trabalho no XCode, existe uma maneira de obter o histórico do AutoSave. O próprio XCode não possui uma entrada de menu para ver o histórico do AutoSave, mas o armazena. Se você abrir os arquivos em questão no TextEdit, poderá reverter e examinar o histórico do AutoSalvar em Arquivo> Reverter.
O que é incrível, e recuperei um dia de trabalho para mim ontem.
Você pode perguntar: "Por que a interface de usuário da linha de comando git, o principal VCS usado para engenharia de software em2016 2017 20182019, pelo menos, faça backup de arquivos antes de simplesmente descartá-los? Você sabe, ferramentas de software bem escritas nas últimas três décadas ".
Ou talvez você pergunte: "Por que esse recurso incrivelmente impressionante de histórico de arquivos está acessível no TextEdit, mas não no Xcode, onde eu realmente preciso?"
… E acho que os dois falarão bastante sobre a nossa indústria. Ou talvez você vá consertar essas ferramentas. O que seria super.
Modelinfelizmente
No VSCODE, ctrl + z (desfazer) funcionou para mim
Eu fiz em git checkout .vez de git add .e todas as minhas alterações de arquivo foram perdidas.
Mas agora usando command + zno meu mac, recuperei as alterações e salvou um tom de trabalho para mim.
Caso você tenha ocultado as alterações mais cedo (por exemplo, antes do rebaseamento), isso provavelmente ajudará
Como recuperar um esconderijo descartado no Git?
mesmo se você já tiver 'stash' fez as alterações.
Um salvador eficaz para esse tipo de situação é o Time Machine (OS X) ou um sistema de backup baseado em tempo semelhante. Isso me salvou algumas vezes, porque eu posso voltar e restaurar apenas esse arquivo.
Acabei de acontecer, verifiquei uma pasta inteira contendo horas de trabalho! Felizmente, descobri que meu IDE Netbeans mantém um histórico de cada arquivo, o que me permitiu recuperar 99% das coisas, mesmo que eu precisasse corrigir algumas coisas manualmente.
Normalmente, tenho todo o meu trabalho em uma pasta dropbox. Isso garante que eu teria a pasta atual disponível fora da minha máquina local e do Github. Eu acho que é o meu outro passo para garantir um "controle de versão" que não seja o git. Você pode seguir isso para reverter seu arquivo para versões anteriores dos seus arquivos da caixa de depósito
Espero que isto ajude.
Tecnicamente sim. Mas apenas em certos casos. Se, por exemplo, você tem a página de código aberta e pressiona o git checkout, percebe que fez check-out acidental da página errada ou algo assim. Vá para a página e clique em desfazer. (para mim, comando + z), e ele voltará exatamente para onde você estava antes de chegar ao bom e velho check-out do git.
Isso não funcionará se sua página foi fechada e você clicar em git checkout. Só funciona se a página de código real estiver aberta
Se você trabalha com um terminal / cmd prompt de aberta, e utilizado qualquer comando git que teria mostrado as mudanças unstaged ( diff, add -p, checkout -p, etc.), e não ter fechado o terminal / cmd prompt de uma vez, você vai encontrar as mudanças unstaged ainda estarão disponíveis se você rolar até onde você executou os comandos git mencionados acima.
Cara,
digamos que você seja um cara de muita sorte, como eu fui, volte para o seu editor e faça um desfazer (comando + Z para mac), você deverá ver o conteúdo perdido no arquivo. Espero que tenha ajudado. Obviamente, isso funcionará apenas para arquivos existentes.
Talvez suas alterações não estejam perdidas. Marque "git reflog"
Cito o artigo abaixo:
"Basicamente, todas as ações que você executa dentro do Git onde os dados são armazenados, você pode encontrá-los dentro do reflog. O Git se esforça para não perder seus dados. Portanto , se por algum motivo você acha que tem, é provável que você possa desenterrá-lo usando git reflog "
Veja detalhes:
http://gitready.com/intermediate/2009/02/09/reflog-your-safety-net.html
git reflogaqui, encontrei esta resposta quando estava procurando desfazer um git checkout HEAD .- eu pretendia digitar git reset HEAD .- eu tinha acabado de fazer um 'git reset --soft HEAD ~ 1' e não sabia sobre o git reflogmodo foi capaz de receber de volta o trabalho que tinha feito :)