2015-04-30 1 views
5

A commencé à expérimenter avec git. Par inadvertance, tous les fichiers du projet ont été ajoutés à "Inclus Changes" dans Team Explorer. J'ai commis tout un engagement initial. L'un de ces fichiers était la base de données SQL CE 4.0 (basée sur des fichiers). J'ai clairement goofed là. Je ne veux pas suivre la base de données et je ne veux pas finir par restaurer la base de données à un point précédent.Comment faire pour déplacer un fichier à suivre non suivi à l'aide de Visual Studio Tools pour Git

Mon problème est que je n'ai aucune idée de la façon de déplacer le fichier sdf de SQL CE 4.0 à partir des changements inclus à untracked. Je ne suis pas expérimenté avec git et tout ce que je sais à ce jour est ce qui me est offert dans l'interface utilisateur de Team Explorer. Alors, comment est-ce que je déplace un fichier de (commis et) suivi à non suivi? A la fin d'une opération réussie, je voudrais avoir le fichier sdf dans la corbeille "non suivi" et aimerais l'enlever des commits qui ont été poussés vers le repo distant. Je ne sais pas exactement par où commencer et que faire

Répondre

5

Pour le supprimer, il suffit de le supprimer et de le valider, cela supprimera le DB de la dernière version du référentiel. C'est toujours facile à partir de l'interface utilisateur de Visual Studio. Si vous devez conserver le fichier PDF, copiez-le dans un emplacement temporaire.

Pour le supprimer de git (et le conserver dans le système de fichiers), vous pouvez lancer le remove command from the commandline. Cela ne peut pas facilement être effectué à partir de l'interface utilisateur Visual Studio.

git rm --cached yourfile.sdf 

Pour supprimer le fichier indésirable du référentiel complètement, you'll need to resort to the commandline. Cela supprimera le fichier de votre historique.

AVERTISSEMENT: Cette opération va réécrire l'historique, entraînant la modification de tous vos identifiants de validation. AVERTISSEMENT

git filter-branch --prune-empty -d c:\temp\tempfolder 
    --index-filter "git rm --cached -f --ignore-unmatch yourfile.sdf" 
    --tag-name-filter cat -- --all 

Le fichier ne sera plus référencé et sera retiré de la prise en pension à un moment donné. Pour dire git pour supprimer le fichier immédiatement, vous devez exécuter alors:

git update-ref -d refs/original/refs/heads/master 
git reflog expire --expire=now --all 
git gc --prune=now --aggressive 

commettras Enfin, ces changements à votre télécommande:

git push origin --all --force 

Cette poussée de force nécessite des autorisations supplémentaires dans TFS. Par default only Project Administrators have this permission.

Pour plus d'explications, lisez les réponses liées aux questions connexes.

Si votre dépôt distant a des branches que vous n'avez pas localement, vous devrez peut-être . Vous pouvez le faire en utilisant:

git pull --all 
+0

essayé git rm --cached StyarterSite.sdf. Il est apparu dans l'Explorateur de solutions en tant qu'exclu (et est allé au dossier "Excluded" dans Team Explorer - je m'attendais au dossier "Untracked"). Lorsque j'ai effectué une modification sans rapport, le fichier sdf a été déplacé du dossier exclu et réapparaissait dans l'explorateur de solutions au moment de l'enregistrement! Si je fais une modification dans la base de données, elle apparaît à nouveau dans Team Explorer dans le dossier "Excluded". Bottom line: le RM ne "l'enlève pas de git". Il est toujours dans le référentiel à la fois local et distant. Est-ce que je manque quelque chose? – RRRSR

+0

Pour le supprimer définitivement de l'historique et de la télécommande, vous devez également effectuer les autres étapes. Vous devrez peut-être également ajouter le fichier à votre fichier gitignore. – jessehouwing