8
votes

Branche commutée après .gitignore et a perdu des fichiers .Gitinlus

Je suis nouveau à git, désolé si cette question a déjà été répondue. J'ai du mal à trouver la réponse à cela.

Je voulais ignorer un ensemble de fichiers qui n'avaient jamais été commis auparavant pour un commit et utilisé l'application GitHub pour les sélectionner et les ignorer. Je suis passé à une autre branche pendant un moment et quand je suis retourné à ma branche, mes fichiers ignorés étaient partis.

Ces fichiers sont-ils supprimés?

J'ai utilisé le checkout GIT pour revenir à la branche, puis le statut GIT --Intionnalisé. Mes fichiers manquants ne sont pas là.


12 commentaires

Git ne supprime pas de fichiers. Utilisez la commande git ls-fichiers et vérifiez si vos fichiers sont répertoriés.


Je l'ai essayé et je n'ai pas vu mes fichiers. Je suis sur un Mac et j'ai pu trouver des messages.Sassc, et mes autres fichiers à travers cette recherche. Le "C" à la fin n'est pas une partie normale de l'extension cependant.


Statut GIT Affiche vos fichiers?


Oh, désolé je voulais dire que j'ai trouvé ces fichiers à Finder. Finder montre les fichiers étranges.


Mais ils sont sous votre référentiel? Ils ont juste changé le nom?


Je viens de comprendre que ces fichiers proviennent du cache de rails de l'application que je travaille.


Statut GIT ne montre pas vos fichiers?


Il montre d'autres fichiers ignorés, mais pas ceux qui n'avaient pas été commis auparavant.


Git Rev-List --Objects --Toutes | grep messages.sass montre tout résultat?


cela ne montre rien.


Il semble que vos fichiers soient complètement supprimés. Je ne sais pas si c'est une fonctionnalité ou un bug. Peut-être que vous pouvez poser cette question dans la liste principale GIT. VGger.kernel.org/vger-lists.html#git


Merci pour tout votre aide. Il est au point que le travail est plus important que la récupération. J'ai fait une "décharge de cerveau" pendant que le travail était toujours frais dans ma tête pour rouvrir à nouveau.


3 Réponses :


1
votes

git ne supprime pas les fichiers qu'il ne se soucie pas de ne se soucier que si spécifiquement dit de le faire (par Checkout -f dans certains cas de vérification, ou Nettoyer ). Comme git ne sait rien d'eux, il ne peut pas les résurer non plus. Utilisez Git Stash Avant de vous déplacer et de faire éventuellement des choses endommagées. Considérez attentivement quels fichiers entrent dans .gitignore , ajoutez tous les fichiers générés non automatiquement vers la version de la version.


2 commentaires

Il semblerait (au moins dans des versions récentes de l'application GITUB) que les fichiers ignorés sont automatiquement cachés lorsque vous changez de branches. Voir ma réponse.


"Ajoutez tous les fichiers non générés automatiquement au contrôle de version." Oui! La seule exception pourrait être des fichiers vraiment énormes tels que des sauvegardes de base de données - auquel cas il est préférable de le stocker dans un dossier totalement différent (ou un sous-dossier définitivement ignoré).



5
votes

Vous pouvez le faire en utilisant git reflog --all pour obtenir le code SHA à partir du moment où l'application GITHUB a automatiquement étalé vos fichiers ignorés avant de passer à l'autre branche. Voir https://stackoverflow.com/a/8865242/2970321 .

Par exemple, j'ai récupéré une demande de traction ( / PR / 364 ) à l'aide de l'application (SHA 2ba129d ). Avant de passer à GH-Pages , il a caché mes fichiers ignorés (SHA 36edfc6 ).

Trouver le code SHA d'une cachette abandonnée

afin de récupérer, tout ce que je devais faire était:

GIT Checkout 36edfc6

Mes fichiers ont réapparu par magiquement et j'ai pu les cacher manuellement manuellement ailleurs avant de revenir à gh-pages à nouveau.


3 commentaires

- Tout pas -all -all


@tenprint merci! Vous devriez avoir suffisamment de réputation pour pouvoir suggérer une édition directement (voir Stackoverflow.com/help/editing ).


Héros! Tu m'as sauvé ;)



1
votes

On dirait que vous avez ignoré les fichiers dans la branche A , puis activé sur la branche B mais n'a pas ignoré les fichiers là-bas.

Si vous ignorez les fichiers uniquement dans la branche A mais pas dans la branche B , ils sont supprimés lors de la mise en retrait de B à < Code> A . Cependant, ils devraient réapparaître si vous revenez de A sur B .

Ceci est un comportement de git normal si vous commandez à partir de n'importe quelle branche x à y , tous les fichiers qui ne sont pas dans la branche y mais dans la branche x est supprimé. Si un fichier est ignoré dans y mais pas dans x , vous avez ce cas.

Pour empêcher que vos fichiers soient supprimés, vous pouvez les ajouter dans le fichier .gitignore dans votre autre branche B .


0 commentaires