935 votes

Git erreur : les fichiers suivants des arbre non chaînée de travail seraient être écrasées par la Caisse

J'ai donc ajouté un dossier à mon .gitignore fichier.

Une fois que je fais un git status il me dit

# On branch latest
nothing to commit (working directory clean)

Cependant, lorsque je tente de changer les branches je reçois le texte suivant:

My-MacBook-Pro:webapp marcamillion$ git checkout develop
error: The following untracked working tree files would be overwritten by checkout:
    public/system/images/9/thumb/red-stripe.jpg
    public/system/images/9/original/red-stripe.jpg
    public/system/images/8/thumb/red-stripe-red.jpg
    public/system/images/8/original/red-stripe-red.jpg
    public/system/images/8/original/00-louis_c.k.-chewed_up-cover-2008.jpg
    public/system/images/7/thumb/red-stripe-dark.jpg
    public/system/images/7/original/red-stripe-dark.jpg
    public/system/images/7/original/DSC07833.JPG
    public/system/images/6/thumb/red-stripe-bw.jpg
    public/system/images/6/original/website-logo.png
    public/system/images/6/original/red-stripe-bw.jpg
    public/system/images/5/thumb/Guy_Waving_Jamaican_Flag.jpg
    public/system/images/5/original/logocompv-colored-squares-100px.png
    public/system/images/5/original/Guy_Waving_Jamaican_Flag.jpg
    public/system/images/4/thumb/DSC_0001.JPG
    public/system/images/4/original/logo.png
    public/system/images/4/original/DSC_0001.JPG
    public/system/images/4/original/2-up.jpg
    public/system/images/3/thumb/logo2.gif
    public/system/images/3/original/logo2.gif
    public/system/images/3/original/Guy_Waving_Jamaican_Flag.jpg
    public/system/images/3/original/11002000962.jpg
    public/system/images/2/thumb/Profile Pic.jpg
    public/system/images/2/original/Profile Pic.jpg
    public/system/images/2/original/02 Login Screen.jpg
    public/system/images/1/original/Argentina-2010-World-Cup.jpg
Please move or remove them before you can switch branches.
Aborting

C'est ce que mon .gitignore fichier ressemble à ceci:

.bundle
.DS_Store
db/*.sqlite3
log/*.log
tmp/**/*
public/system/images/*
public/system/avatars/*

Donc quelques questions, comment puis-je obtenir ce travail, de sorte que je peux changer les branches sans supprimer ces fichiers?

Si je fais un changement, il affectera à ces fichiers? En d'autres termes, si je revenais à cette branche par la suite serait tout soit parfait que jusqu'à mon dernier commit?

P. S. je ne veux pas perdre ces fichiers, je ne veux pas de leur suivi.

1143voto

Scott Schafer Points 2791

J'ai frappé ce message. Dans mon cas, je n'ai pas envie de garder les fichiers, donc cela a fonctionné pour moi:

git clean  -d  -fx ""

Mais il va le supprimer sans traces de fichiers, de sorte qu'il n'est pas une grande réponse à la question posée.

http://www.kernel.org/pub/software/scm/git/docs/git-clean.html

-x désigne les fichiers ignorés sont également supprimés ainsi que les fichiers inconnu à git.

-d signifie retirer sans traces répertoires en plus sans traces de fichiers.

-f est requise pour le forcer à exécuter.

701voto

Régis Points 749

Juste le forcer :``

282voto

Arrowmaster Points 4268

Il semble que vous voulez que les fichiers ignorés, mais ils ont déjà été commis. .gitignore n'a aucun effet sur les fichiers qui sont déjà dans le repo de sorte qu'ils doivent être enlevées avec de l' git rm --cached. L' --cached l'empêche d'avoir un effet sur votre copie de travail et il va juste marque supprimé la prochaine fois que vous vous engagez. Une fois que les fichiers sont supprimés à partir de la mise en pension alors la .gitignore de les empêcher d'être ajouté à nouveau.

Mais vous avez un autre problème avec votre .gitignore, vous êtes trop à l'aide de caractères génériques et de ses causant un match de moins que ce que vous attendez. Au lieu de cela vous permet d'en modifier le .gitignore et de l'essayer.

.bundle
.DS_Store
db/*.sqlite3
log/*.log
tmp/
public/system/images/
public/system/avatars/

177voto

mattbasta Points 7377

Si vous êtes sous OS X, il peut être le nom d’un fichier ayant eu certains caractères changer la casse. Essayez de définir l’option de configuration suivants :

48voto

Greg Hewgill Points 356191

Git est vous dire qu'il veut créer des fichiers (nommé en public/system/images/9/... etc), mais vous avez déjà existantes des fichiers dans ce répertoire qui ne sont pas suivis par Git. Peut-être quelqu'un d'autre que ces fichiers sur le dépôt Git, et c'est la première fois que vous avez activé cette branche?

Il y a probablement une raison pour laquelle ces fichiers dans votre develop de la branche, mais pas dans votre direction. Vous devrez demander à vos collaborateurs pourquoi.

comment puis-je obtenir ce travail, de sorte que je peux changer les branches sans supprimer ces fichiers?

Vous ne pouvez pas faire sans les fichiers disparaissent en quelque sorte. Vous pouvez renommer public de my_public ou quelque chose pour l'instant.

si je revenais à cette branche par la suite serait tout soit parfait que jusqu'à mon dernier commit?

Si vous validez vos modifications, Git de ne pas les perdre. Si vous n'avez pas de valider vos modifications, puis Git va essayer vraiment dur de ne pas remplacer le travail que vous avez fait. C'est ce que Git est pour vous avertir au sujet dans le premier exemple, ici (lorsque vous essayé de changer de branches).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X