Como obter o comportamento de reversão do SVN no Git

0

Eu sei, eu sei, git revert mas eu acabei de saber que ele não se comporta exatamente como svn revert - pelo menos, não no Visual Studio 2015, ou talvez não no TortoiseGit. Eu vou explicar:

Eu sou novo no VS2015 também novo no Git. Quando eu descobri que o VS2015 tem integração com o Git, eu experimentei. No entanto, eu estava trabalhando em vários arquivos e estava pronto para cometer apenas um deles. Infelizmente, o filtro que apliquei no painel Team Explorer não se aplica a quais arquivos foram confirmados (acho que é por isso que o título do botão é "Commit All"). Em vez disso, ele cometeu todos os arquivos "sujos" - oops!

Recorrendo ao TortoiseGit para ver o registo do meu repo, selecionei o commit mais recente (local) e reverti-o através de "Reverter alterações por este commit". Eu esperava que essa operação revertesse os arquivos em que eu estava trabalhando para voltar ao estado "sujo" em que eles estavam antes de eu me comprometer, como o SVN Revert faz, mas para minha surpresa, a operação reverteu meus arquivos locais para a versão anterior do repo , não para o estado em que estavam antes de eu os ter cometido.

É claro que consegui recuperar meu trabalho porque estava tudo na revisão "todos os arquivos" que eu havia originalmente confirmado. Acabei de definir para trabalhar na cópia de cada arquivo dele para o seu diretório de direito. Mas o que estou perdendo aqui? Existe um recurso do Git que eu deveria ter usado em vez do Revert?

    
por Craig Silver 17.10.2016 / 08:01

1 resposta

0

No Git, você pode remover um commit inteiro. De preferência, você só faz isso com confirmações que não são enviadas. Toda a parte “distribuída” do Git torna isso possível. Com o SVN, suas alterações estão imediatamente disponíveis para outras pessoas. Com o Git, eles estão disponíveis apenas quando são pressionados (“Sync” no Visual Studio).

Portanto, em vez de reverter o commit (o que significa que as mudanças errôneas permaneceriam no repositório e podem ter efeitos colaterais inesperados), do git reset --mixed HEAD~1 . Isso significa que seu diretório de trabalho permanecerá como está, mas o último commit será removido. Isso significa que o Git mostrará todos os arquivos modificados novamente.

A reversão no Git cria uma confirmação "inversa" do commit que você reverteu, desfazendo todas as alterações.

Em seguida, para confirmar apenas um único arquivo, primeiro verifique com git status se o Git não possui alterações indesejadas. Em seguida, use git add path/to/file.txt para preparar (somente) esse arquivo. Depois disso, basta executar git commit , usar uma mensagem de confirmação apropriada e pronto.

Quando você executa git commit e o editor de texto é exibido, o arquivo também contém uma lista de alterações que serão confirmadas. Inspecione cuidadosamente esta lista para certificar-se de que você apenas consente o que deseja.

Além disso, não use o Visual Studio para trabalhar ativamente com o Git. Ele tenta aplicar termos legados do TFS às operações do Git, mas eles não são os mesmos. Em vez disso, tente aprender o Git no console. O Visual Studio tem algumas boas vantagens para o trabalho somente leitura, como uma ótima visualização de diferenças.

    
por 17.10.2016 / 08:12

Tags