Annuler svn add sans annuler les modifications locales

157

J'ai accidentellement couru svn add *et ajouté un tas de fichiers qui ne devraient pas être dans le référentiel. J'ai également des modifications locales dans certains fichiers que je souhaite conserver. Existe-t-il un moyen simple de simplement annuler le svn addsans annuler les modifications locales? La principale suggestion que je vois sur Google est svn revert, qui annule censément les modifications locales.

Jonderry
la source

Réponses:

282

Ce serait:

svn rm --keep-local

La même chose m'est arrivée. :-P

De nombreuses personnes ont indiqué que vous devriez utiliser:

svn rm --keep-local FILENAME

pour appliquer la commande sur un ou plusieurs fichiers, au lieu de tout, ce qui peut avoir des effets secondaires indésirables.

Nostradamus1935
la source
1
Cela n'a eu aucun effet pour moi. J'ai exécuté le code comme ci-dessus (y compris la période de fin) à partir du dossier de base. Je ne sais pas si je manque quelque chose.
zzz
8
Notez que vous devez ajouter un nom de fichier à la commande pour que ce soit le cas svn rm --keep-local FILENAME. Le FILENAMEpeut utiliser * pour faire correspondre plusieurs fichiers (si vous avez la chance d'avoir un modèle).
Adam Badura
4
avertissement! - l'utilisation de cette commande lors de l'utilisation de svn externals supprime également tous les externes attachés ...
kostja
2
Si vous validez ceci, le commit n'inclura-t-il pas la suppression du fichier en question du dépôt?
jwg
1
//, j'ai la même question que jwg. J'ai apporté quelques modifications à un fichier contrôlé par SVN. Je souhaite conserver ces modifications localement. Cependant, je ne pas vouloir supprimer le fichier du référentiel tout à fait. Je ne veux tout simplement pas pousser mes modifications locales dans le fichier.
Nathan Basanese
34

Si ces fichiers se trouvent dans un répertoire qui n'a pas encore été validé, vous pouvez supprimer tout le contenu du répertoire de la prochaine validation en faisant:

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

Cependant, si ces fichiers sont déjà dans le référentiel et contiennent maintenant des modifications que vous ne souhaitez pas valider, vous pouvez valider le reste des fichiers à l'aide des listes de modifications:

svn changelist somename /file/to/be/committed
svn commit --changelist somename
Juampy NR
la source
7

Vous pouvez corriger votre paiement de la manière suivante:

  1. Sauvegardez vos fichiers locaux
  2. Revenir à la caisse SVN
  3. Restaurez les fichiers

-

rsync -av --exclude .svn/ YOURDIR/ YOURDIR.bak
svn revert -R YOURDIR
rsync -av YOURDIR.bak/ YOURDIR 
Brice M. Dempsey
la source
La commande finale crée toujours un niveau de répertoire supplémentaire, c'est-à-dire se terminant par YOURDIR/YOURDIR/, bien que je pense que le problème réside dans la création de la commande de sauvegarde initiale YOURDIR.bak/YOURDIR/.
James
Pour éviter que rsync nécessite une barre oblique de fin sur le répertoire source. J'ai édité la réponse.
Brice M. Dempsey
3

J'ai eu le même problème, j'ai accidentellement ajouté un répertoire / via svn addqui contient les binaires et le fichier compilé. Cette commande supprime en fait le répertoire.

svn rm --force <directory-name>

Dans mon cas, je n'ai pas besoin du répertoire, il était donc sûr de le supprimer. Si vous souhaitez conserver les fichiers / répertoires sauvegardés, alors à un endroit avant d'appliquer la commande et après les recopier

pushya
la source