2010-01-08 5 views
1

Donc, je travaillais dans une branche et j'ai décidé de retirer mon répertoire docs du repo en utilisant git rm -r --cached docs. Tout s'est bien passé. Commis, répertoire de travail propre, tout va bien. Maintenant, lorsque je tente de git checkout master pour que je puisse fusionner cette branche dans le maître, je reçois l'erreur suivante:J'ai du mal à vérifier le maître dans git après avoir supprimé le répertoire du dépôt dans la branche

error: Untracked working tree file 'docs/bin/.htaccess' would be overwritten by merge. 

Est-ce que je peux faire maintenant pour revenir à ma branche maître? Ai-je besoin de replacer le répertoire docs dans le repo, puis de changer de branche, puis de le supprimer sur master?

Répondre

2

Notez que git rm --cached supprime uniquement les fichiers de l'index. Pourquoi ne vouliez-vous pas les supprimer du système de fichiers aussi?

git fait de son mieux pour vous empêcher de perdre votre travail. En supposant que les fichiers en docs sont en toute sécurité engagés dans une autre branche, utilisez

$ git checkout -f master 

De la documentation git checkout:

-f
--force
When switching branches, proceed even if the index or the working tree differs from HEAD. This is used to throw away local changes.

When checking out paths from the index, do not fail upon unmerged entries; instead, unmerged entries are ignored.

+0

Merci c'est exactement ce dont j'avais besoin. Je voulais que le dossier docs existe, je ne voulais pas le suivre. – seth

1

Il semble que le problème est que vous avez supprimé le répertoire du repo, mais pas de votre arbre de travail, alors quand vous essayez de vérifier master, Git voit qu'il y a un fichier qui serait écrasé. Je suppose que vous souhaitez fusionner la branche et inclure la suppression dans la fusion; par la suite, ce répertoire ne serait plus suivi par Git, mais vous l'auriez toujours dans votre copie de travail.

Vous pourriez faire ce que vous décrivez, ou vous pourriez déplacer ce répertoire, vérifier le maître, fusionner votre branche, puis déplacer le répertoire. Vous ajouteriez probablement une règle .gitignore à ce répertoire, de sorte que Git ne le conserve pas dans l'état, ou l'ajoute accidentellement au repo.

Questions connexes