L'extraction d'une branche déplace le pointeur local HEAD
afin qu'il pointe sur le même commit que celui référencé par la branche. Par exemple:
Lorsque sur la branche mybranch
(les C
s sont commits):
HEAD
|
V
master mybranch
| |
V V
C1 -------> C2 -------> C3
Après avoir exécuté git checkout master
:
HEAD
|
V
master mybranch
| |
V V
C1 -------> C2 -------> C3
Cela déplace également les fichiers dans votre répertoire de travail tel que requis pour qu'il est un instantané parfait de ce à quoi le projet ressemblait à ce moment-là. Il ne supprime pas ou ne modifie pas les validations, de sorte que vous ne perdrez pas de travail dans une branche en en extrayant un autre. Ce qui s'est passé dans le cas d'une "tête détachée" telle que décrite dans cette autre question est que C3
n'est pas associée à une branche. Afin de résoudre ce problème, vous devez mettre à jour le commit vers lequel pointe la branche master
afin qu'il inclue les nouveaux éléments (C3
). Extraire master
dit à git que vous travaillez maintenant avec la branche master, puis faire un reset
dur avec le SHA1 du commit que vous voulez pour être à la pointe de votre branche master
met à jour les références de branche à ce que vous voulez.
Edit:
Dans ce cas, une tête détachée était pas la question. Rappelez-vous juste que commettre et pousser sont deux choses différentes dans git. La validation ne communique pas avec un référentiel central comme dans Subversion. Après avoir apporté des modifications à votre répertoire de travail, vous exécutez git add filename
une fois pour chaque fichier que vous avez modifié, où filename
est le nom du fichier. Une fois que tous les fichiers ont été ajoutés à l'index, vous les validez avec git commit
.
Un raccourci pour cela est d'utiliser git commit -a
qui ajoutera automatiquement les fichiers modifiés à l'index avant de valider. Cela vous permet d'ignorer les étapes git add
. Notez que git commit -a
n'ajoutera que fichiers modifiés. Si vous introduisez un nouveau fichier qui n'a jamais été validé, vous devez l'ajouter manuellement avec git add
.Une fois votre validation effectuée, vous pouvez exécuter git push
pour envoyer cette validation à votre référentiel distant et mettre à jour les branches distantes. Cela ne fait que de la communication à distance. Contrairement à Subversion, le commit lui-même est géré localement, sans aucune interaction avec le serveur.
Quelle question est "this" question? Vous n'avez pas fourni de lien. –
désolé, voir modifier :) – danwoods