Comment "décompresser" un fichier dans svn et / ou git

Ça m'arrive tout le temps. Je version accidentellement un fichier, je ne veux pas être versionné (c.-à-d. développeur/fichiers de configuration spécifiques à la machine).

si je commets ce fichier, je détruirai les chemins sur toutes les autres Machines de développement - elles seront mécontentes.

si je supprime le fichier de versioning, il sera supprimé des autres machines des développeurs - ils seront mécontents.

si je choisis de ne jamais commettre le file, j'ai toujours une caisse "sale" - je suis malheureux.

est un bon moyen de" déversion " un fichier du contrôle des révisions, qui ne causera de mécontentement à personne?

edit: essayer de clarifier un peu: j'ai déjà Commité le fichier vers le dépôt et je veux seulement le supprimer du versioning - Je ne veux spécifiquement pas qu'il soit physiquement supprimé de tout le monde faisant une caisse. J'ai d'abord voulu être ignoré.

réponse: Si je pouvais accepter une deuxième réponse, ce serait ce . Il répond à ma question concernant git - la réponse acceptée concerne svn.

67
demandé sur Community 2008-08-26 14:20:41

15 réponses

SVN version 1.5 supporte la suppression / suppression d'un fichier d'un dépôt sans perdre le fichier local

tiré de http://subversion.tigris.org/svn_1.5_releasenotes.html

Nouveau --keep-option locale conserve chemin d'accès après la supprimer..

Delete (remove) prend maintenant une option --keep-local pour conserver ses cibles localement, de sorte que les chemins ne seront pas supprimés même s'ils ne sont pas modifiés.

34
répondu 2009-06-30 21:59:45

en Git, afin de le supprimer de l'arbre, mais pas du répertoire de travail, ce que je pense est ce que vous voulez, vous pouvez utiliser le drapeau -- cached, c'est-à-dire:

git rm --cached <filename>
60
répondu wxs 2010-06-04 22:27:57

si vous "ajoutez" accidentellement un fichier dans svn et que vous ne l'avez pas engagé, vous pouvez inverser ce fichier et il supprimera l'add.

8
répondu Glenn Slaven 2008-08-26 10:21:58

Sans l'avoir essayé...

dans git, si vos modifications n'ont pas été propagées dans un autre dépôt, vous devriez être capable de git rm le(S) fichier (s) affecté (s), git rebase --interactive pour réordonner le commit de suppression pour être juste après le commit dans lequel vous avez accidentellement ajouté les fichiers offensants, et puis écraser ces deux commits ensemble.

bien sûr, cela n'aidera pas si quelqu'un d'autre a tiré vos changements.

7
répondu Kai 2008-08-26 10:47:05

il semble que vous ayez déjà ajouté et engagé le fichier dans subversion (je suppose que vous utilisez Subversion). Si tel est le cas, il n'y a que deux façons de supprimer ce fichier:

  1. Marquer le fichier comme supprimé et valider.
  2. effectuer un svnadmin dump , filtrer la révision où vous avez accidentellement commis le fichier et effectuer un svnadmin load .

croyez-moi, vous ne voulez pas vraiment pour faire le numéro 2. Cela invalidera toutes les copies de travail du dépôt. Le mieux est de faire le numéro 1, marquer le fichier comme ignoré et s'excuser.

5
répondu Trumpi 2008-08-26 10:52:31

Look up svn: ignore and .gitignore - ces fonctionnalités vous permettent d'avoir des fichiers supplémentaires dans votre caisse qui sont ignorés par votre RCS (lors d'une opération "status" ou autre).

pour les fichiers de configuration spécifiques à la machine, une bonne option est de vérifier un fichier nommé avec un extra ".exemple de" l'extension, c'est à dire. config.xml.sample . Les développeurs individuels feraient une copie de ce fichier dans config.xml et le modifieraient pour leur système. Avec svn:ignore ou .gitignore vous pouvez vous assurer que le fichier config.xml qui n'est pas traduit en version électronique n'apparaît pas toujours aussi sale.

en réponse à votre édition: Si vous supprimez le fichier du dépôt maintenant, alors vos développeurs obtiendront un conflit la prochaine fois qu'ils feront une mise à jour (en supposant qu'ils ont tous changé le fichier pour leur système). Ils ne perdront pas leurs changements locaux, ils seront récupérables de quelque part. S'ils n'ont pas fait de modifications locales, alors leur fichier de configuration disparaîtra mais ils pourront simplement récupérer précédent hors contrôle source et utilisez ça.

4
répondu Greg Hewgill 2008-08-26 10:26:19

pour supprimer un fichier entièrement d'un dépôt git (dites que vous avez commit é un fichier avec un mot de passe, ou accidentellement commit des fichiers temporaires)

git filter-branch --index-filter 'git update-index --remove filename' HEAD

alors je pense que vous devez vous engager, et push -f si c'est dans des branches distantes (rappelez-vous que cela pourrait ennuyer les gens si vous commencez à changer l'histoire du dépôt.. et s'ils se sont déjà retirés de vous avant, ils pourraient encore avoir le fichier)

4
répondu dbr 2008-08-30 12:08:48

pour supprimer un fichier déjà sous contrôle source:

git rm <filename>

et ensuite

git commit -m ...

vous devriez ajouter chaque fichier que vous voulez ignorer à la .dossier gitignore. Je vérifie en outre toujours le .gitignore fichier à mon référentiel, donc si quelqu'un vérifie le code sur sa machine, et le fichier est généré à nouveau, il n'a pas "voir" comme "sale".

bien sûr si vous avez déjà commis le dossier et quelqu'un d'autre a obtenu votre sur une autre machine, vous devrez modifier chaque dépôt local pour modifier l'historique. Au moins c'est une solution possible avec git. Je ne pense pas que svn te laisserait faire ça.

si le fichier est déjà sur le dépôt principal (Git) ou sur le serveur (svn), Je ne pense pas qu'il y ait une meilleure solution que de simplement supprimer le fichier dans une autre propagation.

3
répondu Sergio Acosta 2008-08-26 10:29:38

pour SVN, vous pouvez revenir sur des fichiers que vous n'avez pas encore engagés. Dans TortoiseSVN vous juste à droite, cliquez sur le fichier dans la fenêtre et choisissez Rétablir...

Sur la ligne de commande utilisation de svn revert [fichier]

Je ne sais rien de GIT depuis que je ne l'ai jamais utilisé.

2
répondu Magnus Westin 2008-08-26 10:24:40

autant Que je sache, il n'y a pas de moyen facile de supprimer un fichier de contrôle de version dans svn une fois qu'il est engagé.

vous devrez sauvegarder le fichier ailleurs et le supprimer du contrôle de version. Que copie de sauvegarde de revenir à nouveau.

c'est un système de contrôle de version après tout... ;)

1
répondu FantaMango77 2008-08-26 10:25:06

vous pouvez exclure des fichiers de subversion avec le paramètre global-ignore

http://svnbook.red-bean.com/en/1.1/ch07.html#svn-ch-7-sect-1.3.2

consultez la documentation pour plus de détails

1
répondu paan 2008-08-26 10:27:37

I f I choisir de ne jamais s'engager dans le fichier, j'ai toujours un "sale" checkout - je suis malheureux.

en ce qui concerne ce point particulier, vous pourriez vouloir .gitignore le fichier comme l'autre ont suggéré, ou d'utiliser un schéma comme celui décrit dans ce réponse de la mine.

1
répondu Damien Diederen 2017-05-23 12:02:38

deux étapes simples dans SVN:

1. Ajouter ce répertoire dans le répertoire parent svn: ignorer la propriété:

svn propedit svn:ignore .  

2. Supprimer le répertoire:

svn rm mydir

3. Commettre

veuillez noter que lorsque d'autres développeurs font une svn update , ce répertoire ne sera pas supprimé. SVN juste la décompose plutôt.

1
répondu Manu M. 2012-03-21 05:36:59

vous pouvez désactiver tous les fichiers du répertoire courant avec cette commande. Le bit sed inverse l'ordre pour que svn puisse le traiter:

find . | sed '1!G;h;$!d'| awk '{print "svn rm --keep-local " }'

comme il a déjà été dit dans d'autres réponses, single file n'est pas en version électronique avec ceci:

svn rm --keep-local yourFileNameXXX
0
répondu PerfectGamesOnline.com 2016-03-09 12:13:58

dans Windows, si ce que vous recherchez est de copier le dossier à un autre endroit et de le supprimer de git, de sorte que vous ne voyez plus les icônes, vous supprimez juste le .dossier git. Le. le dossier git est caché, donc vous devez aller à organiser / dossier et les Options de recherche, L'affichage des fichiers cachés option, sous votre dossier principal. Il devrait annuler le versionnement.

0
répondu live-love 2016-12-06 17:31:51