Je me demandais s'il existait un moyen facile de pousser et de tirer une branche locale avec une branche distante portant 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é/expédié rapidement. Toutefois, si je modifie 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
les usages git-config branch.newb.merge
pour déterminer d'où tirer, pourquoi ne pourrait pas git-Push
avez-vous une option de configuration similaire? Y a-t-il un joli raccourci pour cela ou devrais-je simplement continuer sur le long chemin?
Sûr. Réglez simplement votre Push.default
Sur upstream
sur Push branches en amont (ce qui est identique à celui que pull
va extraire, défini par branch.newb.merge
), Plutôt que pousser les branches sur celles qui correspondent (nom qui est le réglage par défaut pour Push.default
, matching
).
git config Push.default upstream
Notez que cela s'appelait tracking
pas upstream
avant Git 1.7.4.2, donc si vous utilisez une version plus ancienne de Git, utilisez plutôt tracking
. L'option Push.default
A été ajoutée dans Git 1.6.4. Par conséquent, si vous utilisez une version plus ancienne, vous n'aurez pas cette option et vous devrez spécifier explicitement la branche sur laquelle pousser.
Lorsque vous effectuez l’ajout initial de Push paramètre - :
git Push -u Origin my_branch:remote_branch
Les poussées ultérieures iront où vous le souhaitez.
MODIFIER:
Selon le commentaire, cela ne fait que tirer.
git branch --set-upstream
devrait le faire.
La commande par Adam est maintenant obsolète. Vous pouvez utiliser:
git branch --set-upstream-to Origin/my_remote_branch my_local_branch
définir la branche amont de my_local_branch
à Origin/my_remote_branch
.
Voici le processus qui a fonctionné pour moi.
git clone original-repo-url
git remote rename Origin upstream
git remote add Origin new-repo-url
Maintenant, votre nouveau référentiel sera "Origine" et le référentiel original est "en amont". Confirmez-le en exécutant git remote -v. (Remarque: Upstream est utilisé pour extraire du repo 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 repo).
git Push Origin master
Désormais, le nouveau maître de votre référentiel distant (sur Github) sera synchronisé avec le maître d'origine, mais il ne comportera aucune branche.
git rebase upstream/branch-name
git Push Origin master
Rebase est une fusion intelligente. Appuyez à nouveau sur Maîtriser et vous verrez la branche de fonctionnalité sélectionnée en tant que maître sur le nouveau référentiel.
Optionnel:
git remote rm upstream
git remote add upstream new-repo-url