Eu queria enviar uma comparação para revisão, para um projeto de código aberto.
Eu recebi o código usando SVN (do terminal, Ubuntu). E fiz edições menores em alguns arquivos. Agora, há apenas uma única alteração que desejo enviar. O restante das alterações que fiz foi para depuração e não é mais necessário.
Eu gerei diff usando svn di > ~/os/firstdiff.diff
Então, minha pergunta: como descartar minhas alterações locais?
Existe uma maneira SVN de fazer isso? Caso contrário, terei que ir para cada arquivo e excluir todas as minhas edições. Então eu geraria um novo diff e o enviaria.
Você precisa reverter todas as alterações usando o comando svn revert :
svn revert foo.c
svn revert --recursive .
fonte
svn revert --recursive .
me ajuda muito .--recursive
parâmetro reverte todas as alterações locais e essa é a pergunta.Para descartar alterações locais em um arquivo específico:
Para descartar alterações locais em uma pasta específica:
fonte
Simples
svn revert
foi suficiente para o pôster original. No entanto, um simplessvn revert
não funcionará no caso mais geral em que vocêA sugestão do @ ErichBSchulz de usar
git add -p
é muito razoável e muito mais geralmente aplicável nesse caso. A resposta estava faltando alguns detalhes. Supondo que seu diretório atual seja o diretório que você deseja criar o patch compartilhável, você pode fazer algo assim:Faça o checkout da versão original do subversion para um diretório diferente (escolha um nome de diretório que não exista, aqui usando o subdiretório
TMP/
).Usando esse svn checkout como base, inicie um repositório git, ignorando os diretórios .svn; comprometa tudo no svn head ao seu repositório temporário git
Copie os metadados do repositório git recém-preparados para o diretório de trabalho original; como o diretório de verificação de subversão não é necessário, você pode se livrar dele. Seu diretório de trabalho agora é o repositório git e subversion:
Agora você pode usar o poderoso e conveniente
git add -p
para escolher interativamente exatamente o que deseja compartilhar e enviá-los ao seu repositório git. Se você precisar adicionar arquivos à confirmação, faça tambémgit add <file-to-add>
antesgit commit
Usando a confirmação, prepare um patch que você deseja compartilhar. Para esse fim, você também pode usar
git diff HEAD^..HEAD
, ougit format-patch
(o último pode ser usado para preparar diretamente e-mails a serem enviados contendo o patch ou vários patches):Para se livrar dos metadados do git, basta fazê-lo
rm -rf .git/
. Se você planeja continuar invadindo o diretório de trabalho original, pode continuar usandogit
para gerenciar suas alterações locais. Nesse caso, você provavelmente se beneficiaria do investimento em aprender a usargit svn
.Nota: Se você está familiarizado com
git
isso, é algo trivial improvisar. Caso contrário, isso pode parecer um pouco confuso. Você pode generalizar a abordagem escrevendo um script com estas etapas para implementar um "commit interativo" ou "criação de patch interativa" para o svn que pode ser usado sem o conhecimento do git.fonte
Você poderia usar
Ao publicar o seu diff, não se esqueça de informar a revisão contra a qual você está enfrentando.
Como outros responderam, você também pode usar com
svn revert
cuidado. Depende se você deseja manter as alterações locais para o seu trabalho futuro ou não ...fonte
revert
minhas mudanças o tempo todo. Então, eu usaria o seu caminho no futuro.Vá para a raiz desse repositório e execute o seguinte comando
fonte
svn revert -R .
pode ser mais curtoVocê pode usar o comando commit no arquivo que deseja colocar e usar o comando svn revert para descartar as alterações locais restantes
fonte