Por que o "git reset HEAD" não desfaz minhas alterações não confirmadas e sem etapas?
Eu anteriormente era capaz de desfazer alterações através do SourceTree executando a função "Descartar", que sob o capô produz este comando:
git -c diff.mnemonicprefix=false -c core.quotepath=false reset -q HEAD -- myproj.csproj
git -c diff.mnemonicprefix=false -c core.quotepath=false checkout HEAD -- myproj.csproj
De repente, isso não funciona. Eu faço o descarte, nenhum erro ocorre, atualize novamente a exibição, mas os arquivos ainda estão "modificados". Tentei fazer o mesmo na linha de comando com o mesmo resultado:
c:\myproject> git reset HEAD
Unstaged changes after reset:
M myproj.csproj
Por que ainda está listado como uma mudança sem estágio?
Eu verifiquei que o arquivo é realmente gravável (nenhum processo está bloqueando)
atualizar
git checkout
também não funcionou:
C:\myproject>git checkout myproj.csproj
C:\myproject>git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: myproj.csproj
#
no changes added to commit (use "git add" and/or "git commit -a")
Atualização 2 Também tentei:
git checkout --
git checkout -- .
git checkout HEAD
, nenhum dos quais resolve meu problema
atualização 3 - grande passo mais perto:
Acontece que quando eu faço o checkout, o .csproj é realmente revertido para a versão correta,mas a versão com check-out usa uma versão diferentecodificação de feed de linha. Enquanto a versão de check-in possui CR-LF (0D-0A) para alimentação de linha, o check-out tem apenas LF (0A). Portanto, o git acredita que o arquivo seja diferente em cada linha. Porque isso?
atualização 4: adicionou a segunda linha de comandos git emitida pelo SourceTree. Eu não percebi que da primeira vez, por isso penseigit reset HEAD
faria qualquer coisa. Isso não muda o fato de que o problema subjacente ainda está relacionado ao CR / LF (acho)
resumo Nunca encontrei uma solução para o problema, mas "resolvi" verificando o arquivo. Minha pergunta original não continha informações de que o SourceTree realmente emitiu os comandos corretos para reverter o que eu queria, então a maioria das respostas aqui aborda esse problema. oreal A questão ainda não está clara, mas minha teoria principal é que ela estava relacionada ao CR / LF.