faire une poussée de git à partir d'une tête détachée
Je suis sur une tête détachée et j'ai fait quelques changements. Je veux pousser ces changements à cette tête détachée avec git. Je ne veux pas que mes modifications aillent sur la branche développer et certainement pas sur la branche master. Je travaille sur un dossier avec une autre personne.
Exemple de branches
develop
master
*(HEAD detached at origin/49792_testMocha)
Comment puis-je pousser dans la tête sans affecter développer ou maîtriser?
6 réponses
Créez une nouvelle branche en utilisant git checkout -b BRANCH_NAME
, Puis poussez la nouvelle branche à distance: git push origin BRANCH_NAME
Si vous êtes sur une tête détachée et que vous voulez pousser vers votre branche distante
git push origin HEAD:name-of-your-branch
Sinon, vous pouvez créer une nouvelle branche et la pousser ( elle sera créée automatiquement)
git branch new-branch-name
git push -u origin new-branch-name
Alors que toutes les réponses ici répondent en quelque sorte à la question initiale (comment pousser d'une tête détachée sans affecter les autres branches), toutes les bar none suggèrent de créer une nouvelle branche, mais aucune, y compris la réponse votée vous indique comment pousser vers une nouvelle branche distante Sans Créer une nouvelle branche locale.
Je vous donne:
git checkout --detach # (or anything else that leaves you with a detached HEAD - guillotine anyone?)
[change stuff & commit]
git push origin HEAD:refs/heads/new-branch-name
Tada!
git checkout
git checkout <commit_id>
git checkout -b <new branch> <commit_id>
git checkout HEAD~X // x is the number of commits t go back
Cela va extraire une nouvelle branche pointant vers le commit souhaité.
Cette commande va extraire un commit donné.
À ce stade, vous pouvez créer une branche et commencer à travailler à partir de ce point.
# Checkout a given commit.
# Doing so will result in a `detached HEAD` which mean that the `HEAD`
# is not pointing to the latest so you will need to checkout branch
#in order to be able to update the code.
git checkout <commit-id>
# create a new branch forked to the given commit
git checkout -b <branch name>
Note: faire une branche avant pousser est d'autant plus recommandé que git 2.11 ou moins utilisé pour segfault!
Ce ne sera pas le cas avec Git 2.12+ (T1 2017)
Voir commettre b10731f (07 Janv 2017) par Kyle Meyer (kyleam
).
(Fusionné par Junio C Hamano -- gitster
-- dans commettre b85f79c, 18 janvier 2017)
branch_get_push
: Ne pas segfault lorsque la tête est détachée"
git <cmd> @{push}
" sur une tête détachée utilisée d'erreur de segmentation; il a correction de l'erreur avec un message.
L'erreur sera maintenant:
HEAD does not point to a branch
Avec Git 2.12 ou plus, vous pouvez ensuite pousser votre tête détachée vers une branche distante, comme indiqué dans la réponse deMatt .
Créez une nouvelle branche pour cette validation et extrayez-la: git checkout -b <branch-name> <commit-hash>
. Maintenant, vous pouvez pousser vos modifications à la nouvelle branche: git push origin <branch-name>
Au cas où vous auriez besoin de nettoyer votre autre branche des commits restants, assurez-vous de lancer git reset --hard <branch-name>
.
Voici un article qui explique comment fonctionne branchement et tête détachée .