2 votes

Créer une branche git sans modifier la copie de travail

Je viens de créer un nouveau dépôt et d'ajouter une télécommande :

git init
git remote add foo something

Maintenant, je veux que git soit sur le plus récent commit de foo/master . D'habitude, c'est juste :

git checkout master

Git est assez intelligent pour utiliser foo/master ces jours-ci.

Le problème est que j'ai déjà des fichiers dans ma copie de travail et que je ne veux pas qu'ils changent. Je veux git diff pour me montrer les changements et je veux engager l'état local et le pousser vers foo.

Le contexte : L'état local est un site web généré sur le point d'être poussé vers les pages Github.

1voto

torek Points 25463

Si vous venez de faire git init dans un nouveau référentiel (par opposition à la re init -d'un référentiel existant), et n'ont pas encore exécuté git commit vous êtes actuellement sur un branche à naître (normalement master -comme-unborn-branch). Cela signifie que HEAD contient le nom master tandis que la branche nommée master n'existe pas réellement.

Si vous n'avez pas non plus exécuté git add commandes, votre index est actuellement vide .

L'état que vous souhaitez comme à avoir est d'avoir le nom master pointent vers le même commit que foo/master sans modifier le contenu de l'arbre de travail. Mais d'abord, vous devez obtenir tous les commits de l'arbre de travail distant. foo :

$ git fetch foo

Maintenant, vous pouvez créer la branche elle-même :

$ git branch master foo/master

Puisque vous êtes déjà sur master -Il était simplement "à naître". Vous êtes maintenant toujours en vie. master y master pointe vers le même commit que foo/master .

Votre index est toujours vide, donc git status vous montrera que vous avez supprimé tous les fichiers du HEAD commit, avec chaque fichier dans l'arbre de travail comme un fichier non suivi. Si vous souhaitez remplir votre index à partir du commit actuel, vous pouvez maintenant le faire :

$ git read-tree HEAD

et ensuite git reset divers fichiers pour les restaurer. Sinon, si vous voulez simplement utiliser l'arbre de travail, vous pouvez simplement git add . (bien que vous puissiez vouloir mettre en place un .gitignore d'abord).

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