J'ai donc ajouté un dossier à mon fichier .gitignore.
Une fois que j'ai fait un git status
il me dit
# On branch latest
nothing to commit (working directory clean)
Cependant, lorsque j'essaie de changer de branche, j'obtiens ce qui suit :
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
Voici à quoi ressemble mon fichier .gitignore :
.bundle
.DS_Store
db/*.sqlite3
log/*.log
tmp/**/*
public/system/images/*
public/system/avatars/*
Comment faire pour que cela fonctionne et que je puisse changer de branche sans supprimer ces fichiers ?
Si je fais une modification, cela affectera-t-il ces fichiers ? En d'autres termes, si je reviens à cette branche par la suite, tout sera-t-il parfait jusqu'à mon dernier commit ?
Je ne veux pas perdre ces fichiers, mais je ne veux pas qu'ils soient suivis.
Attention : cela supprimera les fichiers non suivis, ce n’est donc pas une bonne réponse à la question posée.
J'ai également reçu ce message. Dans mon cas, je ne voulais pas garder les fichiers, donc cela a fonctionné pour moi :
git clean -d -f .
git clean -d -f ""
Si vous voulez aussi supprimer les fichiers ignorés par git, alors exécutez la commande suivante.
git clean -d -fx .
git clean -d -fx ""
http://www.kernel.org/pub/software/scm/git/docs/git-clean.html
-x
signifie que les fichiers ignorés sont également supprimés ainsi que les fichiers inconnus de git.
-d
signifie supprimer les répertoires non suivis en plus des fichiers non suivis.
-f
est nécessaire pour forcer l'exécution.
Il semble que vous vouliez que les fichiers soient ignorés alors qu'ils ont déjà été commités. .gitignore n'a aucun effet sur les fichiers qui sont déjà dans le repo, ils doivent donc être supprimés avec git rm --cached
. Le --cached
l'empêchera d'avoir un quelconque effet sur votre copie de travail et il sera simplement marqué comme supprimé lors de la prochaine livraison. Après que les fichiers aient été supprimés du dépôt, le .gitignore empêchera qu'ils soient ajoutés à nouveau.
Mais vous avez un autre problème avec votre .gitignore, vous utilisez excessivement les jokers et cela fait qu'il correspond moins que ce que vous attendez. Changeons plutôt le .gitignore et essayons ceci.
.bundle
.DS_Store
db/*.sqlite3
log/*.log
tmp/
public/system/images/
public/system/avatars/
Git vous dit qu'il veut créer des fichiers (nommés public/system/images/9/...
etc), mais vous avez déjà des fichiers existants dans ce répertoire qui *ne sont pas suivis par Git. Peut-être que quelqu'un d'autre a ajouté ces fichiers au dépôt Git, et c'est la première fois que vous passez à cette branche ?
Il y a probablement une raison pour laquelle ces fichiers sont dans votre branche develop
mais pas dans votre branche actuelle. Vous devrez peut-être demander à vos collaborateurs pourquoi.
Comment faire pour que cela fonctionne et que je puisse changer de branche sans supprimer ces fichiers?
Vous ne pouvez pas le faire sans faire disparaître les fichiers d'une manière ou d'une autre. Vous pourriez renommer public
en my_public
ou quelque chose du genre pour le moment.
Si je reviens à cette branche par la suite, tout sera-t-il parfait jusqu'à mon dernier commit ?
Si vous livrez vos modifications, Git ne les perdra pas. Si vous ne livrez pas vos modifications, Git fera tout son possible pour ne pas écraser le travail que vous avez effectué. C'est ce dont Git vous a averti en premier lieu (lorsque vous avez essayé de changer de branche).