Si vous ne souhaitez pas réinitialiser la «configuration en amont» de votre branche locale, vous pouvez utiliser ceci:
git pull remote1 "$(git rev-parse --symbolic-full-name HEAD)"
Cela fera probablement des choses inattendues si votre HEAD local est détaché.
Vous pouvez le regrouper sous un alias Git pour le rendre plus facile à taper (bien que vous ayez toujours besoin de le distribuer à tous vos utilisateurs):
git config --global alias.pullcb \
'!sh -c '\''git pull "$1" "$(git rev-parse --symbolic-full-name HEAD)"'\'' -'
Utilisez l'alias comme ceci:
git pullcb remote1
Je suppose que ce type de relation de branche (nécessité d'extraire facilement la même branche nommée de plusieurs télécommandes) n'est pas facilement configurable car il est rarement utile lorsque la plupart des travaux sont effectués dans des branches de sujet .
Par ailleurs, si la «nouvelle télécommande» doit devenir la nouvelle source principale en amont de votre branche locale, envisagez de mettre à jour la «configuration en amont» de votre branche locale afin de pouvoir simplement l'utiliser git pull
(sans spécifier de nom distant). ).
Vous pouvez vérifier la configuration en amont d’une branche dans Git 1.7.0 et versions ultérieures 1 avec
git rev-parse --symbolic-full-name my-branch@{upstream}
Vous pouvez mettre à jour la configuration en amont dans Git 1.7.0 et versions ultérieures 2 avec
git branch --set-upstream my-branch some-remote/their-branch
Une fois que votre branche a la configuration en amont appropriée, vous pouvez simplement l'utiliser git pull
pour extraire de la «branche en amont» de la branche actuelle.
En fin de compte, la configuration en amont d'une branche est contrôlée par les variables branch.<name>.remote
et de branch.<name>.merge
configuration (voir git-config (1) ). Les options --track
et --no-track
de git branch
et git checkout
peuvent être utilisées pour contrôler si ces variables sont définies lors de la création d'une branche. La branch.autoSetupMerge
variable de configuration contrôle le comportement par défaut (quand ni --track
, ni --no-track
sont données); Par défaut, il crée la configuration en amont pour les branches créées à partir de branches de suivi à distance. Ainsi, les commandes suivantes créent la nouvelle branche locale «my-branch» et la configurent pour suivre la branche «leur-branche» à partir de la télécommande «some-remote»:
git branch my-branch some-remote/their-branch
git checkout -b my-branch some-remote/their-branch
1
Pour les versions de Git antérieures à la version 1.7.0, vous pouvez vérifier la configuration en amont de «my-branch» comme suit:
git config branch.my-branch remote && git config branch.my-branch.merge
Voir git-config (1) pour une description des valeurs.
Vous pouvez également inspecter manuellement le .git/config
fichier.
2
Pour les versions de Git antérieures à 1.7.0, vous pouvez modifier la configuration en amont de «my-branch» comme suit:
git config branch.my-branch.remote some-remote &&
git config branch.my-branch.merge refs/heads/their-branch
Voir git-config (1) pour une description des valeurs.
Vous pouvez également modifier manuellement le .git/config
fichier ( git config -e
dans Git 1.6.3 et versions ultérieures).
git config -e
, comme je ne le savais pas ... j'espère avoir le temps de vérifier le reste de la réponse;)