2011-08-08 4 views
0

J'ai un problème sérieux est arrivé à mon dépôt git. J'avais 2 branches auparavant, et j'ai écrit des codes la nuit dernière et j'ai oublié de pousser au github. Ce matin, j'ai utilisé l'autre machine et essayé une nouvelle branche et je les ai poussé (les codes sont stockés dans la boîte de dépôt, peu importe quelle machine j'utilise), alors git m'a donné une erreur: "permission denied". Puis j'ai réalisé que je n'utilisais pas mon labtop, alors j'ai ouvert mon labtop et essayé d'entrer dans la branche que je viens de créer. Mais alors il me semble que je ne peux pas faire ça, et ce qui était pire, tous les codes que j'ai commis sur l'autre machine ont disparu! J'utilise git branch pour voir la branche liste et maintenant il est comme:branche git foiré

centeredForm (shang's conflicted copy 2011-08-08) 
* centeredform 
    master 
    refinement 

où le premier « centeredForm » est la branche que j'ai créé sur l'autre machine, et « centeredform » est la branche que j'ai créé mon labtop après. Mes codes ont-ils disparu? Ou y a-t-il un moyen de restaurer le statut précédent?

+0

Avez-vous essayé de passer à la branche centrée (où je suppose que votre travail d'hier est)? git checkout centeredForm – richardolsson

+0

La chose filaire est que la branche "centeredForm" semble être là, mais quand j'ai essayé d'y passer, git dit: "error: pathspec 'centeredForm' ne correspond à aucun fichier connu de git. " –

Répondre

5

S'il a été validé, il n'est pas perdu. Il y a toujours l'histoire:

git reflog 

Ensuite, vous pouvez saisir le SHA de votre dernier commit, et annuler tous les gâchis:

git reset --hard <SHA> 

IMPORTANT: sauvegarde everyhing premier. Le reset --hard va supprimer toutes les modifications non validées.

0

Pour voir si le commit est toujours là, et que dropbox ne l'a pas "égaré". Utilisez git rev-parse branchYouLost. Cela recherchera le commit pour cette branche.

Que faire git cat-file -t SHA_above_command_gave_you

De l'apparence de votre message d'erreur je suppose cela vous dire que c'est un objet non valide. Dans ce cas, il semblerait que Dropbox a perdu le bout de votre branche.

Une autre option pour essayer de trouver vos commits perdus est d'utiliser git reflog et essayez de voir si l'un d'entre eux contient le commit que vous voulez. Vous pouvez utiliser git cat-file -p [email protected]{n} pour obtenir le message de journal et voir si c'est celui qui vous manque.