Como faço para reverter um check-in TFS?

92

Gostaria de reverter uma alteração que fiz recentemente no TFS. No Subversion, isso era bastante simples. No entanto, parece ser uma dor de cabeça incrível no TFS:

Opção 1: obter a versão anterior

  1. Obtenha manualmente a versão anterior de cada arquivo
  2. Confira para editar
  3. Falha - o checkout (no VS2008) me força a obter a versão mais recente

Opção 2: Obtenha as ferramentas elétricas TFS

  1. Baixar ferramentas de poder do Team Foundation
  2. Emita o comando de reversão da linha cmd
  3. Falha - não funcionará se houver outras alterações pendentes

Opção 3: Desfazer alterações manualmente

  1. desfazer manualmente minhas alterações e, em seguida, comprometer um novo conjunto

Questão

Como faço para reverter para um conjunto de alterações anterior no TFS?

Jason
fonte
2
O VSS não tem reversão. Eles têm outro recurso que se chama "rollback", mas em termos do TFS é realmente um Destroy. (a) você só pode fazer isso da ponta; não funcionará se quaisquer alterações adicionais tiverem sido verificadas após aquela que você deseja reverter (b) REMOVE PERMANENTEMENTE as alterações do banco de dados
Richard Berg
1
Oh, como eu anseio pela facilidade de reversão do VSS.
Greg
2
Eu me deparei com esse problema recentemente - por que diabos é tão difícil reverter no TFS. Reverter é uma das funções básicas do controle de origem
JohnIdol
2
Isso é muito doloroso no TFS!
Jon Kragh
1
Mude para o Mercurial! Mudei de emprego e me conectei ao TFS. Tenho escrito scripts do PowerShell para fazer com que pareça Hg na linha de comando desde então.
Sumo de

Respostas:

63
  1. Baixe e instale o Team Foundation Power Tools .
  2. Abra o prompt de comando do Visual Studio
  3. Navegue até o diretório no sistema de arquivos para o qual o TFS está mapeado. Se você não fizer isso, receberá um erro "Não foi possível determinar o espaço de trabalho" ao tentar reverter
  4. Certifique-se de que todo o resto seja verificado ou arquivado
  5. execute rollback tfpt para abrir a interface.
  6. Escolha os conjuntos de alterações que deseja reverter
  7. Faça check-in das novas versões dos arquivos revertidos

A grande desvantagem da ferramenta é que ela desejará atualizar tudo em sua área de trabalho antes que você possa mesclar. Resolvi esse problema criando um novo espaço de trabalho apenas para a reversão, que foi mapeado diretamente para o local na árvore de origem onde estavam os arquivos afetados.

Se você precisar de ajuda para descobrir quais conjuntos de alterações reverter, acho a ferramenta de revisão de código no suplemento gratuito Team Foundation Side Kicks muito útil.

Helephant
fonte
Você pode tentar desta forma, mas esteja avisado, as ferramentas não são bem documentadas e, mesmo que você consiga superar todos os erros, pode ou não ser capaz de realmente reverter. (Eu tentei por 2 horas)
alquímico
1
Essa técnica funcionou para mim. A sugestão do espaço de trabalho foi muito boa (e é importante se você estiver lidando com uma grande base de código).
cloggins
1
Aviso ... há uma armadilha 22 se você estiver usando versões incompatíveis do TFS e do Visual Studio. Estou usando o VS2010 com TFS2008 (um caso clássico de TI não alcançando o dev) e o TF.EXE com VS2010 agora tem reversão ... mas não funciona com o TFS2008. E o tfpt 2010 tem a reversão removida, então não posso fazer do jeito antigo.
Simon Gillbee
7
o comando 'rollback' foi retirado das ferramentas avançadas para VS2010, então agora você só precisa digitar 'tf rollback': social.msdn.microsoft.com/Forums/en/tfspowertools/thread/…
Dan
A partir da versão de agosto de 2011 do TFS Power Tools, para reverter, você não precisa mais usar a linha de comando.
joerage
24

Sua solução nº 1 funcionará: 1. obtenha manualmente a versão anterior de cada arquivo

  1. verifique para editar

  2. Faça check-in do arquivo e ignore as alterações do servidor quando solicitado.

A razão pela qual ele falhou para você é porque você deve ter a opção "Obter versão mais recente do item no check-out" ativada. Desative esta opção indo para Ferramentas ... Opções ... Controle de código-fonte ... Visual Studio Tema Foundation Server e desmarcando "Obter versão mais recente do item no check-out"

Felicidades

Happer
fonte
2
Fiz assim após lutar por 2 horas com Ferramentas Elétricas e não chegar a lugar nenhum ... wtf está com TFS não suportando esta funcionalidade básica ...
alquímico
A funcionalidade foi adicionada ao TFS 2010 / Visual Studio 2010.
Robaticus
2
Para ficar claro, este não é um verdadeiro retrocesso. Ele está adquirindo uma versão mais antiga. Não é a mesma coisa.
Ryan Cromwell,
+1 por apontar o problema com a versão mais recente do item na configuração de check-out !
Sir Crispalot
18

A reversão foi movida de tfpt.exe para tf.exe, a ferramenta Team Foundation Version Control.

TF - Team Foundation Version Control Tool, Version 10.0.30319.1
Copyright (c) Microsoft Corporation.  All rights reserved.

Rolls back the changes in a single or a range of changesets:
tf rollback /changeset:changesetfrom~changesetto [itemspec] [/recursive]
            [/lock:none|checkin|checkout] [/version:versionspec]
            [/keepmergehistory] [/noprompt] [/login:username,[password]]

tf rollback /toversion:versionspec itemspec [/recursive]
            [/lock:none|checkin|checkout] [/version:versionspec]
            [/keepmergehistory] [/noprompt] [/login:username,[password]]
Kevin lo
fonte
1
Existe uma maneira de fazer isso diretamente do Visual Studio?
Kyle Delaney
14

Você tem duas opções para reverter (reverter) um changeset no TFS 2010 Version Control. A primeira opção é usar a Interface do usuário (se você tiver a versão mais recente do TFS 2010 Power Tools instalado).

Reverter conjunto de alterações na interface do usuário para TFS 2010

A outra opção é usar o aplicativo de linha de comando de controle de versão do TFS 2010:

tf.exe rollback

Tenho informações sobre as duas abordagens em minha postagem do blog disponível aqui: http://www.edsquared.com/2010/02/02/Rollback+Or+Undo+A+Changeset+In+TFS+2010+Version+Control.aspx

Ed Blankenship
fonte
14

Outra maneira de fazer sua opção 1 funcionar é inverter a ordem das etapas:

  1. Confira os itens
  2. Obtenha a versão específica da versão antiga
  3. Faça check-in (ignorando a caixa de diálogo "A versão do servidor de aviso é mais recente") OU na seção de conflitos da caixa de diálogo Alterações pendentes resolva os conflitos mantendo a versão local.

Isso funcionará mesmo se você tiver definido Get Latest On Checkout.

Dave Roberts
fonte
1
não funcionou para mim. Mas isso deve ser porque algum cabeça de alfinete configurou o TFS com políticas idiotas.
SHODAN
5

Para referência, se você estiver usando o TFS 2010 , aqui está o link para o manual Rollback Command (Team Foundation Version Control) .

Para reverter um conjunto de alterações específico , vá para o Visual Studio Command Prompt (2010) , navegue até o diretório do espaço de trabalho TFS e digite o comando:

tf rollback /changeset:C12345

onde 12345está o seu número de changeset. Depois disso, ele irá mostrar o log do que fez e você terá que resolver os conflitos de mesclagem.

Иван Грозный
fonte
4

Não ter uma opção de reversão é realmente um recurso do TFS;)

Para reverter as alterações:

  1. Verifique qualquer versão específica das mudanças que você deseja
  2. Editar-> Selecionar tudo-> Copiar o texto no arquivo
  3. Verifique qualquer versão do arquivo que esteja no servidor
  4. Cole o arquivo e faça check-in.

E agora todos os seus changesets intermediários antes do rollback também são salvos! Que grande recurso!

CamelBlues
fonte
No início, achei que era sarcástico, mas essa solução pode realmente funcionar para aqueles de nós que não têm a sorte de ter recebido a permissão de reversão.
EBarr
A menos que alterações tenham sido feitas posteriormente nos mesmos arquivos que você realmente deseja manter.
Robert Jeppesen
Grosseiro, mas essa é a única maneira de fazer isso no TFS. Se eu fizer uma verificação e recuperar a versão antiga, o TFS fará o AutoMerge para a última versão sempre que eu tentar fazer o check-in.
Steve
1

Se você fez 1 check-in e deseja apenas desfazê-lo, existe um changeset # associado a ele. Faça um histórico da pasta em questão para ver o changeset incorreto. Abra-o para ver os detalhes (todos os arquivos alterados, etc).

Acredito que você pode restaurar ou desfazer um conjunto de alterações dessa tela, mas meu Visual Studio travou quando tentei fazer isso. / suspiro - Eu definitivamente compartilho sua dor.

Onde eu faço downmod do TFS neste site?

Ben Scheirman
fonte
Não, a reversão da IU do histórico foi adicionada apenas no TFS 2010.
Richard Berg,
1

Ben Scheirman - a caixa de diálogo Changeset Details não tem funcionalidade de reversão.

jlo
fonte
1

Outra opção é TFSPlus . Este suplemento do Visual Studio adiciona (entre outros) o comando Get This Version à janela de histórico. Se você tiver feito o check-out do arquivo, ele o substituirá por essa versão. Se você fizer um check-in posteriormente, fará efetivamente um rollback para essa versão.

Porém, ele funciona em arquivos individuais em vez de conjuntos de alterações completos.

Damir Arh
fonte
1

Obtenha a versão específica

Na lista suspensa Tipo de versão , selecione Tipo como conjunto de alterações

Use o botão Changeset ... para encontrar seu Changeset ou apenas digite, se você souber este número.

Depois de ter o changeset específico.

Verificação de saída

Check-in

Guru
fonte
0

Nenhuma dessas soluções funcionou muito bem para mim. A solução de Dave Roberts foi a mais próxima do que realmente consegui fazer. Não tenho a opção Obter versão mais recente do item no check-out habilitada, no entanto, parece ser uma política do servidor.

Minha solução para isso é verificar o arquivo para edição, obter uma versão específica e, quando o conflito for detectado, use a ferramenta de mesclagem (e não mescle manualmente nenhuma das alterações) para que o arquivo esteja na condição em que estava.

Eu ia comparar com a versão específica e copiar o arquivo inteiro, em seguida, apenas colá-lo por cima do antigo.

Ainda assim, deve haver uma maneira mais fácil de fazer isso!

PJUK
fonte
0

A solução acima é para o TFS2008. O TFS2010 possui recurso de reversão integrado. veja este artigo para detalhes.

StarCub
fonte
Exceto que o VS2010 (tf) não funciona contra o TFS2008 e como o TFPT 2010 não tem mais reversão, você está bloqueado.
Simon Gillbee
0

Instale a versão mais recente do TFS Power Tools (agosto de 2011), e você pode apenas clicar com o botão direito em um conjunto de alterações e selecionar "Rollback Whole Changeset". Não fica muito mais fácil do que isso.

Ele está disponível aqui: http://visualstudiogallery.msdn.microsoft.com/c255a1e4-04ba-4f68-8f4e-cd473d6b971f

É sugerido em Melhorias do Team Explorer na página acima:

A novidade neste lançamento é a capacidade de [..] reverter facilmente as alterações no controle de versão.

Eugene Beresovsky
fonte