web-dev-qa-db-fra.com

faire un git Push à partir d'une tête détachée

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?

48
Winnemucca

Créer une nouvelle branche en utilisant git checkout -b BRANCH_NAME

Puis poussez la nouvelle branche vers remote: git Push Origin BRANCH_NAME

45
J. Titus

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
118

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. ????

15
Matt

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 .

2
VonC

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>
2
CodeWizard

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 .

0
Nesha Zoric