Desfazer svn add sem reverter edições locais


157

Eu acidentalmente corri svn add *e adicionei um monte de arquivos que não deveriam estar no repositório. Também tenho edições locais em alguns arquivos que quero manter. Existe uma maneira simples de desfazer a svn addação sem reverter as edições locais? A principal sugestão que vejo no Google é svn revertque, supostamente, desfaz as edições locais.

Respostas:


282

Isso seria:

svn rm --keep-local

A mesma coisa aconteceu comigo. :-P

Muitas pessoas comentaram que você deve usar:

svn rm --keep-local FILENAME

aplicar o comando em um ou vários arquivos, em vez de tudo, o que pode ter efeitos colaterais não intencionais.


1
Isso não teve efeito para mim. Eu executei o código como acima (incluindo o período à direita) da pasta base. Não tenho certeza se estou perdendo alguma coisa.
Zzz

8
Observe que você precisa adicionar o nome do arquivo ao comando para que assim seja svn rm --keep-local FILENAME. O FILENAMEpode usar * para corresponder a vários arquivos (se você tiver a sorte de ter um padrão).
Adam Badura

4
Aviso! - usando este comando ao usar svn externos remove todos os externos ligados, bem ...
kostja

2
Se você confirmar isso, o commit não incluirá a remoção do arquivo em questão do repositório?
Jwg 01/04

1
//, tenho a mesma pergunta que jwg. Fiz algumas edições em um arquivo controlado por SVN. Quero manter essas edições localmente. No entanto, não quero remover completamente o arquivo do repositório. Eu só não quero enviar minhas edições locais para o arquivo.
Nathan Basanese

34

Se esses arquivos estiverem em um diretório que ainda não foi confirmado, você poderá remover todo o conteúdo do diretório da próxima confirmação, executando:

svn delete --keep-local /path/to/directory

No entanto, se esses arquivos já estiverem no repositório e agora contiverem alterações que você não deseja confirmar, você poderá confirmar o restante dos arquivos usando as listas de alterações:

svn changelist somename /file/to/be/committed
svn commit --changelist somename

7

Você pode corrigir seu checkout da seguinte maneira:

  1. Faça backup de seus arquivos locais
  2. Reverta a verificação SVN
  3. Restaure os arquivos

-

rsync -av --exclude .svn/ YOURDIR/ YOURDIR.bak
svn revert -R YOURDIR
rsync -av YOURDIR.bak/ YOURDIR 

O comando final sempre cria um nível de diretório extra, ou seja, terminando com YOURDIR/YOURDIR/, embora eu ache que o problema está no comando de backup inicial criando YOURDIR.bak/YOURDIR/.
James

Para evitar que o rsync exija uma barra no diretório de origem. Eu editei a resposta.
Brice M. Dempsey

3

Eu tive o mesmo problema, acidentalmente adicionei um diretório / via svn addque contém os binários e o arquivo compilado. Este comando realmente exclui o diretório.

svn rm --force <directory-name>

No meu caso, não preciso do diretório, por isso era seguro excluir. Se você deseja manter os arquivos / diretórios salvos em um local antes de aplicar o comando e depois copiá-los novamente

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.