1370 votes

Fixer une tête de Git détaché ?

Je faisais des travaux dans mon référentiel et a remarqué un fichier a des changements locaux. Je ne voulais pas en plus alors j'ai supprimé le fichier, en pensant que je peux juste commander une nouvelle copie. J'ai voulu faire le git équivalent de

svn up .

À l'aide de git pull ne semble pas fonctionner. Certains aléatoire de la recherche m'a conduit vers un site où quelqu'un recommandé de faire

git checkout HEAD^ src/

(src est le répertoire contenant le fichier supprimé).

Maintenant, je trouve que j'ai un décollement de la tête. Je n'ai aucune idée de ce que c'est. Comment puis-je l'annuler?

1997voto

ralphtheninja Points 24346

Tête détachée signifie que vous n’êtes plus sur une branche, vous avez extrait une validation unique dans l’histoire (dans ce cas la validation avant la tête, c'est-à-dire la tête ^).

Vous avez seulement besoin de payer la branche que vous étiez sur, par exemple

Prochaine fois que vous avez modifié un fichier et que vous souhaitez restaurer à l’état que c’est dans l’index, ne pas supprimer le fichier tout d’abord, il suffit de faire

Cela restaurera le fichier foo l’état que c’est dans l’index.

460voto

Toni Gamez Points 401

Si vous avez modifié les fichiers que vous ne voulez pas perdre, vous pouvez pousser. Je me suis engagé à eux en mode détaché et après que vous pouvez déplacer vers une branche temporaire d’intégrer plus tard en master.

Extrait de :

Quoi faire avec validation faite dans une tête détachée

150voto

tanius Points 349

Comment sortir de détacher la TÊTE de l'état quand vous avez fait des modifications dans ce mode:

En supposant que vous ne souhaitez pas conserver les modifications (incl. s'engage) que vous faites pendant détaché de la TÊTE de l'état, vous devez d'abord appliquer ces modifications:

git reset --hard

puis la sortie de détacher la TÊTE de l'état par la vérification de la direction générale, vous avez travaillé sur l'avant, par exemple:

git checkout master

(Sans l' git reset --hard, git se plaindre à la caisse sur modifiés non validées fichiers en isolé, environnement, faire de la caisse échouent).

61voto

Philippe Gerber Points 6360

Voici ce que j’ai juste après que j’ai réalisé que j’étais sur une tête détachée et avait déjà apporté quelques modifications.

Je me suis engagé les changements.

Je me suis souvenu du hachage (1fe56ad) de la validation. Alors, j’ai vérifié la branche sur que j’aurais dû être.

Enfin, j’ai appliqué les modifications de la validation à la direction générale.

Je pense que c’est un peu plus facile que de créer une branche temporaire.

40voto

larsks Points 23184

Lorsque vous découvrez un spécifique s'engager en git, vous vous retrouvez dans un détaché à la tête de l'état...qui est, votre copie de travail ne reflète plus l'état d'un nom de référence (comme le "maître"). Ceci est utile pour l'examen de l'état passé du référentiel, mais pas ce que vous voulez si vous êtes en train d'essayer de rétablir les modifications.

Si vous avez apporté des modifications à un fichier particulier et vous souhaitez simplement les jeter, vous pouvez utiliser l' checkout de commande comme ceci:

git checkout myfile

Cela aura pour effet de rejeter toutes les modifications non validées et revenir le fichier dans quelle état il a dans la tête de votre branche courante. Si vous souhaitez annuler les modifications que vous avez déjà commis, vous souhaiterez peut-être utiliser l' reset commande. Par exemple, ceci permet de réinitialiser le référentiel de l'état de la précédente livraison, en rejetant toute modification ultérieure:

git reset --hard HEAD^

Toutefois, si vous partagez le référentiel avec d'autres personnes, un git reset peut être perturbateur (parce qu'il efface une partie de l'historique du dépôt). Si vous avez déjà partagé changements avec d'autres personnes, en général, vous voulez regarder à l' git revert au lieu de cela, ce qui génère un "anticommit" -- qui est, il crée un nouveau commit qui "annule" les changements en question.

Le Git Livre a plus de détails.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X