Je suis sur une tête détachée et fait quelques changements. Je veux pousser ces changés à cette tête détachée avec git. Je ne veux pas que mes modifications soient appliquées à la branche develop et surtout pas à 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?
Créer une nouvelle branche en utilisant git checkout -b BRANCH_NAME
Puis poussez la nouvelle branche vers remote: 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 cliquer dessus (elle sera créée automatiquement)
git branch new-branch-name
git Push -u Origin new-branch-name
Alors que toutes les réponses proposées ici répondent à la question initiale (comment pousser à partir d’une tête détachée sans toucher d’autres branches), toutes suggèrent de créer une nouvelle branche.
Voici comment pousser vers une nouvelle branche distante sans créer une nouvelle branche locale:
git checkout --detach # (or anything else that leaves you with a detached HEAD - guillotine anyone?)
[change stuff & commit]
git Push Origin HEAD:refs/heads/my-new-branch
Remplacez Origin
par le nom distant approprié (auquel vous avez accès en écriture) et my-new-branch
avec ce que vous voulez que la nouvelle branche soit appelée.
Vos commit (s) sur HEAD
seront poussés vers une nouvelle branche nommée my-new-branch
. ????
Note: faire une branche avant est d'autant plus recommandé que git 2.11 ou moins soit habitué à commettre une erreur de segmentation!
Ce ne sera pas le cas avec Git 2.12+ (Q1 2017)
Voir commit b10731f (07 janv. 2017) par Kyle Meyer (kyleam
) .
(Fusion par Junio C Hamano - gitster
- dans commit b85f79c , 18 janv. 2017)
branch_get_Push
: ne pas commettre d'erreur de segment lorsque HEAD est détaché"
git <cmd> @{Push}
"sur un détaché HEAD utilisé pour segfault; il a été corrigé en erreur avec un message.
L'erreur maintenant sera:
HEAD does not point to a branch
Avec Git 2.12 ou plus, vous pouvez alors pousser votre détaché HEAD vers une branche distante, comme indiqué dans Matt 's answer .
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 vérifier la nouvelle branche pointant vers le commit désiré.
Cette commande passera à un commit donné.
À ce stade, vous pouvez créer une branche et commencer à travailler à partir de ce moment.
# 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>
Créez une nouvelle branche pour ce commit et extrayez-la: git checkout -b <branch-name> <commit-hash>
. Vous pouvez maintenant transmettre vos modifications à la nouvelle branche: git Push Origin <branch-name>
Au cas où vous auriez besoin de nettoyer votre autre branche des restes de commits, assurez-vous de lancer git reset --hard <branch-name>
.
Voici un article qui explique comment tête ramifiée et détachée .