2009-11-18 3 views
1

branche principale a ces fichiers et dossiers (simplifié):git checkout branche distante montre des fichiers superflus?

C:\Local\TickZoom\Project>ls 
file.txt   name.txt  public 

branche publique est suivi d'un référentiel des fournisseurs et a été fusionné sous-arbre comme dossier public dans la branche principale ci-dessus. public a trois dossiers seulement (simplifié):

C:\Local\TickZoom\Project>ls 
platform providers www 

Lors du passage du public au maître il se comporte correctement. Toutefois, lors du passage de maître à public, une chose étrange se produit. Il a tous les fichiers et les dossiers des deux combinés:

C:\Local\TickZoom\Project>git checkout public 

C:\Local\TickZoom\Project>ls 
file.txt name.txt public 
platform providers www 

Cependant, vérification de l'état git dit rien n'a changé. J'ai découvert que 'git reset --hard' résout le problème du public. INDICATION: Il semble que cela ne se produise qu'après avoir effectué un nouveau commit à maîtriser. Est-ce que git fait une sorte de fusion automatique? Après 'git reset --hard', la vérification de masteriser et de retour au public fonctionne bien, même si de façon répétée.

Le premier, je pensais qu'il a été réparé mais il s'est produit à nouveau la la prochaine fois que j'ai fait un changement. Laissez-moi essayer encore une fois maintenant pour m'assurer ...

Maintenant, je ne peux pas le reproduire. Mais cela est arrivé deux fois.

Un autre CLUE est que la première fois que j'ai fait une réinitialisation git --hard il se plaignait de fichiers verrouillés par les processus. Une fois les programmes incriminés fermés, le git reset --hard a réussi et la vérification a fonctionné entre les deux branches.

Est-ce que la vérification est confuse lorsque les fichiers sont verrouillés et que échoue "silencieusement"? Il serait mieux, c'est le problème à échouer de la même manière git reset --hard fait que de simplement signaler succès et ayant un espace de travail brouillé.

Toute autre sagesse ou des options à régler sur git checkout pour éviter cela seront appréciées.

Wayne

+0

Bon, maintenant trouvé le problème. Comment réparer? Le problème est qu'il existe des fichiers ignorés dans les sous-dossiers. git fait correctement le checkout mais laisse tous les fichiers ignorés et s'il y a plusieurs répertoires, il laisse toutes les directions pour les atteindre. J'ai essayé git clean -f et il laisse toujours les fichiers. Comment nettoyer les fichiers non-suivis lors de la commutation entre les branches? – Wayne

Répondre

3

Utilisez cette option pour résoudre

git clean -f -d -X

Cela nettoie uniquement les fichiers ignorés par votre .gitignore et tous les répertoires vides qui les contiennent. Je le fais maintenant dans un script avant de passer à la caisse des branches qui proviennent de dépôts totalement différents.

Ce n'est pas un problème lors de la commutation de branches entre le même logiciel.

Wayne

+1

Dans le commentaire que vous avez laissé pour clarifier votre question, vous avez demandé: "Comment nettoyer les fichiers * non-suivis * lorsque vous passez d'une branche à l'autre?" L'option majuscule X ne nettoie pas les fichiers "non suivis", elle ne nettoie que les fichiers ignorés. L'option minuscule x nettoie les fichiers "non-suivis" (y compris ceux qui sont ignorés). C'est pourquoi ma réponse a suggéré la minuscule x. :) –

6

Vous pouvez nettoyer tous fichiers non suivis en utilisant:

git clean -dfx 

Assurez-vous qu'il vraiment ne sont pas tous les fichiers que vous trassez souhaitez conserver avant d'exécuter cette commande!

+0

Notez que j'ai trouvé que les majuscules X ne nettoyaient que les fichiers ignorés et laissaient les fichiers non suivis tout seuls - beaucoup plus sûr. La minuscule x supprime tous les fichiers ignorés et non-suivis - comme vous l'avez dit - dangereux. Donc, votre point d'exclamation a été méritée! – Wayne

+0

Cela fonctionne mais si vous avez des éléments d'environnement tels que 'bower_components',' node_modules' ou 'plates-formes', ils seront également supprimés. – Deminetix

Questions connexes