30 votes

Poussez la branche Git locale vers l'origine

Je suis en train de travailler sur deux machines d'origine et de pensions de titres sur le troisième (l'origine est accessible à partir de deux autres, pas de lien direct entre la machine1 et machine2).

# Machine 1
$ git branch
  master
* testing
  cms

# Machine 2
$ git branch
* master

Maintenant, je veux pousser l' testing direction générale de l'origine et de l'avoir sur machine2 trop, de sorte que l'effet final serait:

# Machine 2
$ git branch
* testing
  master

J'ai essayé:

# Machine 1
$ git push origin testing

# Machine 2
$ git pull origin testing                # bunch of merge conflicts
$ git checkout -b testing origin/testing # errors too

État actuel:

# Machine 1
$ git branch -r
  origin/HEAD -> origin/master
  origin/master
  origin/testing

Comment faire?

Ma prochaine question pourrait être: comment faire pour supprimer l' origin/testing de la branche?

23voto

Bruno Points 47560

Au lieu d'utiliser git pull (qui récupère et fusionne), essayez git fetch (qui n'essaiera pas de fusionner avec votre branche actuelle sur machine2, et provoquera des conflits):

 # Machine 1
$ git push origin testing

# Machine 2
$ git fetch origin testing
$ git checkout -b testing origin/testing
 

16voto

abarr Points 578

Vous avez réussi à pousser la branche de test vers l'origine, il ne vous reste plus qu'à obtenir la branche vers machine2.

Je ne suis pas sûr de l'état du dépôt sur machine2, donc je supprimerais le répertoire (ou en créerais un nouveau à utiliser) et clonerais simplement le dépôt sur Machine2 et les tests de paiement ...

Donc sur Machine2 dans un répertoire vide (nouveau ou propre):

 $ git clone git@github/somewhere
$ git branch
* master

$ git checkout testing
# ...
# something about getting and switching
# ... 

$ git branch
* testing 
master
 

0voto

Cupcake Points 22154

Le posteur d'origine états:

Ma prochaine question pourrait être: comment faire pour supprimer l' origin/testing de la branche?

Vous devez être clair ce que vous voulez dire par là, parce que, après que vous appuyez testing de la distance repo, il y aura également un local à distance-suivi de la branche appelée origin/testing qui conserve la trace de la dernière situation connue de l' testing direction sur la télécommande. Vous pouvez trouver cette distance-suivi de la direction générale en vertu de l' .git/refs/remotes/origin/.

La suppression à la fois la télécommande testing et locales, origin/testing branches

Si vous supprimez la direction générale de la télécommande avec les commandes suivantes:

git push origin :testing
# Or
git push origin --delete testing

puis les locaux à distance de suivi de la succursale origin/testing seront également supprimés automatiquement pour vous.

Supprimant les locaux origin/testing de la branche

Si pour quelque raison vous avez juste envie de supprimer le local distant de suivi de la succursale origin/testing, mais pas l' testing direction sur la télécommande, puis vous pouvez exécuter l' git branch -d commande avec l' --remotes ou -r drapeau:

git branch --delete --remotes origin/testing
# Or shorter
git branch -dr origin/testing

Si vous obtenez un message d'erreur que la direction générale ne peut pas être supprimé car il n'a pas été fusionnées encore, alors vous pouvez forcer la suppression à l'aide de la -D drapeau à la place de --delete ou -d.

Voir Aussi

-1voto

Sarjeet Points 1

Ma prochaine question sera probablement: comment supprimer la branche origine / test?

Pour répondre à votre prochaine question: Sortez de la succursale que vous souhaitez supprimer et exécutez:

git branch -d <nom_branche>

-d supprime la branche complètement fusionnée

-D supprimer la branche (même si elle n'est pas fusionnée)

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