Je veux montrer une partie de mon travail en les téléchargeant sur mon compte GitHub. Cependant, certains fichiers contiennent des mots de passe, comme les connexions à la base de données.
Existe-t-il un moyen de marquer un fichier comme étant inutilisable avec Git afin qu'il ne puisse pas apparaître sur GitHub?
.gitignore
. Autant que je sache, il n’existe pas de méthode de contrôle à 100%git
pour éviter de valider un fichier spécifique dans tous les cas. Bien que cela puisse être considéré comme une fonctionnalité ... permettant aux commandes explicites de remplacer les configurations génériques.Réponses:
Tout d’abord, il n’existe aucun moyen d’afficher certains commits et commits dans votre référentiel Git local, mais d’une manière ou d’une autre, non visibles dans GitHub; si vous avez un fichier validé dans Git, il apparaîtra dans GitHub.
Deuxièmement, il n'y a pas de moyen simple et pratique de jamais marquer un fichier individuel comme étant «non gommable». Mais il existe certainement un moyen d'ignorer un fichier dans un dépôt Git: en ajoutant le (s) fichier (s), y compris leur chemin relatif si nécessaire - dans un
.gitignore
fichier :Créer une base
.gitignore
est assez facile puisqu'il ne s'agit que d'un fichier texte brut. Donc, par exemple, si j'avais unconfig.php
fichier dans votre racine, vous le feriez; en supposant que vous utilisez PHP, mais le concept s'applique à n'importe quelle configuration. De plus, j'utilise Nano comme éditeur de texte dans cet exemple, mais n'hésitez pas à utiliser l'éditeur de texte que vous utilisez normalement pour cela:Et ajoutez simplement ce nom de fichier à ce fichier:
Enregistrez-le et maintenant, Git ignorera simplement ce fichier.
Cela dit, ce que j'aime faire pour les configurations telles que celle-ci est de garder un exemple / exemple de configuration propre aux détails sensibles dans le référentiel afin que je sache ce que le format de fichier de configuration est un fichier nommé comme ceci:
De cette façon, vous savez exactement comment
config.php
configurer le fichierconfig.SAMPLE.php
et vous pouvez vous assurer que le fichierconfig.php
n’est jamais touché par Git.De plus, si vous envisagez de montrer votre code, vous devez vous attendre à ce que quelqu'un essaye de le prendre et de le mettre en œuvre sur son propre système. Rappelez-vous, nous ne sommes pas vous et sans un exemple de fichier de configuration dans votre référentiel, les gens ne comprendront pas vraiment comment implémenter le code eux-mêmes. Ils pourraient peut-être même penser que vous n'êtes pas compétent parce que vous n'avez pas fourni d'exemple de configuration de base.
la source
database_url = Environment.DATABASE_URL
et laisser un commentaire ci-dessus comme# postgres://username:password@localhost/dbname
.Vous pouvez également ajouter un crochet de pré-validation pour mettre en œuvre les contrôles de cohérence. Le répertoire
.git/hooks
de chaque référentiel git contient des exemples de scripts.Le script appelé
pre-commit
est exécuté s'il existe avant chaque validation, et une valeur de retour non nulle annule la validation.Par exemple, vous pourriez avoir un script simple comme ceci:
Et si cela
filename
correspond, la validation échoue.la source
.gitignore
est une pratique très courante - et généralement comprise - pour toute personne utilisant Git. Mais un script de pré-validation n'est pas vraiment utilisé par la plupart des utilisateurs de Git. Cela nécessite une certaine connaissance de la configuration et une vraie raison pour laquelle une méthode comme celle-ci serait préférable à la simple utilisation d'un.gitignore
fichier. Mais cela est très utile pour certains cas plus complexes, mais c’est un concept que vous utiliseriez si vous savez vraiment que vous en avez besoin.Ce que @JakeGould a dit Dans certains cas, vous pouvez également utiliser des bits de fichier spéciaux tels que
skip-worktree
ouassume-unchanged
pouvant être définis de la manière suivante; Pour les différences entre les deux, voir la réponse à ce problème :Ce qui cachera alors les modifications supplémentaires apportées à un fichier existant et que vous pourrez utiliser si vous voulez vraiment qu'un fichier soit présent après chaque extraction. Mais je vous conseillerais de ne l'utiliser que si vous savez vraiment ce que vous faites.
la source
Utilisez un
.gitignore
mot comme @JakeGould. En outre, quelques informations connexes:.gitignore
empêche les fichiers d'être suivis; s'ils sont déjà suivis, utilisez-lesgit rm --cached
pour les supprimer$GIT_DIR/info/exclude
seront également ignorés~/.gitconfig
sont également ignorés.Consultez la documentation officielle de Git pour plus de détails.
la source
Pour étendre les réponses de Jake et 46: une très bonne pratique consiste à utiliser une extension cohérente pour les fichiers dans lesquels vous incluez des informations privées et
.gitignore
à toujours exclure les fichiers portant cette extension de manière globale (en utilisant le.gitconfig
fichier tel que mentionné ailleurs pour qu'il soit toujours ignoré pour votre utilisateur).De cette façon, vous pouvez avoir par exemple:
et si vous avez exclu
*.exc
globalement, alors vous savez qu'il ne sera pas validé, même si vous oubliez d'exclure individuellement ce fichier.la source