Je me suis demandé s'il existe un moyen facile de pousser et de tirer une branche locale avec une branche distante avec un nom différent sans toujours spécifier les deux noms.
Par exemple:
$ git clone myrepo.git
$ git checkout -b newb
$ ...
$ git commit -m "Some change"
$ git push origin newb:remote_branch_name
Maintenant, si quelqu'un met à jour remote_branch_name, je peux:
$ git pull
Et tout est fusionné / accéléré. Cependant, si j'apporte des modifications à mon "newb" local, je ne peux pas:
$ git push
Au lieu de cela, je dois:
% git push origin newb:remote_branch_name
Cela semble un peu idiot. Si git-pull
utilisé git-config branch.newb.merge
pour déterminer d'où extraire, pourquoi ne pourrait pas git-push
avoir une option de configuration similaire? Y a-t-il un bon raccourci pour cela ou devrais-je simplement continuer le long chemin?
la source
git push buildserver .:test_this
où le.
sera le nom de la succursale locale que je ne connais pas nécessairement. Je pourrais le chercher, bien sûr, mais s'il y avait une main courte, comme le point, pour ça, ce serait cool.HEAD
est la sténographie que vous recherchez.HEAD
est ce qui pointe vers la branche actuellement extraite, ou directement vers un commit particulier si vous avez une tête détachée.Updates were rejected because a pushed branch tip is behind its remote
erreur pour moi. Mon dépôt local était à jour, mais les noms étaient simplement différents.Lorsque vous effectuez le push initial, ajoutez le paramètre -u :
Les poussées suivantes iront où vous le souhaitez.
ÉDITER:
Selon le commentaire, cela ne met en place que pull.
devrait le faire.
la source
-u
définit simplement l'amont, qui, selon la question, est déjà défini. Il doit mettrepush.default
àupstrem
pour pouvoirpush
respecter le paramètre en amont, car par défaut, c'est lepull
cas.git branch --set-upstream
soit nécessaire. Remarque: mongit --version
est 2.17.1.La commande d' Adam est désormais obsolète. Vous pouvez utiliser:
pour définir la branche amont de
my_local_branch
àorigin/my_remote_branch
.la source
Voici le processus qui a fonctionné pour moi.
Maintenant, votre nouveau dépôt sera «origine» et le dépôt d'origine est «en amont». Confirmez-le en exécutant git remote -v. (Note latérale: Upstream est utilisé pour récupérer à partir du dépôt d'origine - afin de garder votre copie locale synchronisée avec le projet auquel vous souhaitez contribuer - et origin est utilisé pour tirer et pousser puisque vous pouvez contribuer à votre propre dépôt).
git push origin master
Le maître de votre nouveau référentiel distant (sur Github) sera maintenant synchronisé avec le maître d'origine, mais il n'aura aucune des branches de fonctionnalités.
Rebase est une fusion intelligente. Ensuite, poussez à nouveau pour maîtriser et vous verrez la branche de fonctionnalité sélectionnée comme maître sur le nouveau référentiel.
Optionnel:
la source
Je rencontre le même problème depuis un certain temps déjà. J'ai enfin une série de déclarations, donc je n'ai pas à faire à
git push origin local:remote
chaque fois. J'ai suivi ces:Après avoir configuré en amont une branche distante avec un nom différent (1ère ligne), puis l'avoir défini en amont par défaut (2ème ligne), la 3ème ligne obéira maintenant à ces règles et poussera vers l'amont.
la source