Si je comprends bien votre problème, vous voulez les choses suivantes:
- Ont vos fichiers multimédias stockés dans un seul dépôt git, qui est utilisé par de nombreux projets
- Si vous modifiez un fichier multimédia dans les projets dans votre machine locale, il doit apparaître immédiatement dans tous les autres projets (si vous ne voulez pas commettre+poussoir+tirer tout le temps)
Malheureusement, il n'existe pas de solution ultime pour ce que vous voulez, mais il y a certaines choses par lesquelles vous pouvez faire votre vie plus facile.
D'abord, vous devez décider d'une chose importante: ne vous souhaitez enregistrer pour chaque version de votre dépôt de projet une référence à la version des fichiers de médias? Par exemple, si vous avez un projet appelé example.com, vous avez besoin de savoir quel style.css il a utilisé il y a 2 semaines, ou plus tard, est toujours (ou presque) le meilleur?
Si vous n'avez pas besoin de savoir que la solution est facile:
- créer un répertoire pour les fichiers de support et un pour chaque projet
- créer un lien symbolique dans vos projets qui point à l'localement cloné médias référentiel. Vous pouvez soit créer une relative lien symbolique (ex: ../médias), et à supposer que tout le monde va checkout du projet afin que le répertoire de médias est à la même place, ou écrire le nom du lien symbolique .gitignore, et tout le monde peut décider de l'endroit où il/elle met les fichiers multimédia.
Dans la plupart des cas, toutefois, vous voulez savoir ce informations de contrôle de version. Dans ce cas, vous avez deux choix:
Magasin chaque projet en un seul référentiel. L'avantage de cette solution est que vous avez seulement 1 copie du dépot de médias. Le gros inconvénient est qu'il est beaucoup plus difficile pour basculer entre les versions d'un projet (si vous commander une version différente vous pourrez toujours modifier TOUS les projets)
Utilisation submodules (comme expliqué dans la réponse 1). De cette façon, vous permettra de stocker les fichiers multimédias dans un référentiel, et les projets ne contient qu'une référence à un média spécifique des pensions de version. Mais de cette façon, vous aurez normalement de nombreuses copies locales des médias référentiel, et vous ne pouvez pas modifier facilement un fichier multimédia dans tous les projets.
Si j'étais vous, je serais probablement choisir la première ou à la troisième solution (liens symboliques ou submodules). Si vous choisissez d'utiliser des submodules vous pouvez encore faire beaucoup de choses pour rendre votre vie plus facile:
Avant de vous engager, vous pouvez renommer le sous-module de répertoire et de mettre un lien vers une commune répertoire de médias. Lorsque vous êtes prêt à s'engager, vous pouvez supprimer le lien symbolique et de supprimer le sous-module de dos, puis de valider.
Vous pouvez ajouter l'un de vos copie du dépot de médias comme un référentiel à distance à l'ensemble de vos projets.
Vous pouvez ajouter des répertoires locaux à distance de cette façon:
cd /my/project2/media
git remote add project1 /my/project1/media
Si vous modifiez un fichier dans /mon/projet1/media, vous pouvez le valider et de le tirer à partir de /mon/projet2/media sans le pousser à un serveur distant:
cd /my/project1/media
git commit -a -m "message"
cd /my/project2/media
git pull project1 master
Vous êtes libre de supprimer ces commet plus tard (avec git reset) parce que vous n'avez pas partagé avec d'autres utilisateurs.