Je travaillais sur ma succursale locale feature-branch
. J'ai fait des commits et poussé ma succursale locale vers remote. J'ai fait git status
et ça a montré
Your branch is 6 commits ahead of origin/master
Après cela, je passe à une autre branche avec git checkout another_branch
. Après avoir travaillé sur cette branche, j'ai dû retourner dans ma branche de fonctionnalités et je l'ai fait par git checkout feature_branch
Après cela, j'ai fait git status
et ça a montré
Your branch is up to date with origin/feature_branch
Auparavant, il comparait feature_branch
avec origin/master
. Mais maintenant, il se compare à lui-même. Comment puis-je le modifier pour le comparer à origin/master
?
3 réponses
La commande git status
fait un tas de choses utiles. L'une d'elles consiste à comparer la pointe de la branche actuelle avec la pointe de sa branche amont .
Vous dites qu'à un moment donné, vous étiez sur la branche feature-branch
, et git status
l'a comparée à origin/master
. Cela signifie donc que le paramètre en amont pour feature-branch
était origin/master
, comme si vous aviez exécuté:
git branch --set-upstream-to=origin/master feature-branch
Ensuite, plus tard (c'est-à-dire maintenant), vous étiez de nouveau sur feature-branch
, mais git status
l'a comparé à origin/feature-branch
. Cela signifie donc que le paramètre en amont pour feature-branch
est maintenant origin/feature-branch
, comme si vous aviez exécuté:
git branch --set-upstream-to=origin/feature-branch feature-branch
Je note que vous mentionnez:
J'ai effectué des commits [sur
feature-branch
] et j'ai poussé ma branche locale vers la télécommande ...
J'imagine, puisque vous n'avez pas dit ceci, que la façon que vous avez fait cela était de courir:
git push -u origin feature-branch
Vous voyez le -u
là-dedans? Cela indique à git push
que, s'il réussit à pousser feature-branch
vers origin
, en créant ou en mettant à jour feature-branch
dans cet autre Git vers lequel vous poussez, alors votre Git devrait changer l'amont de feature-branch
en origin/feature-branch
correspondant, comme si vous aviez exécuté:
git branch --set-upstream-to=origin/feature-branch
Vous pouvez redéfinir l’amont sur origin/master
, mais ce n’est généralement pas une bonne idée. Maintenant qu'il y a un origin/feature-branch
que votre Git utilise pour se souvenir où se trouve feature-branch
sur origin
, il est préférable de comparer le vôtre feature-branch
à celui de origin
. En effet, maintenant que vous avez publié vos commits, d'autres personnes qui utilisent également l'autre Git sur origin
peuvent les avoir récupérées. De plus, comme Viktor Seč l'a mentionné, cela définit votre amont par défaut pour git merge
et git rebase
(ces étant la seconde moitié de ce que git pull
exécute).
Si vous souhaitez comparer votre feature-branch
à votre propre master
brièvement et temporairement, envisagez d'exécuter les commandes:
git log --oneline master..feature-branch
Ou:
git log --all --decorate --oneline --graph
(qui vous permet de visualiser toutes vos branches et branches de suivi à distance, en même temps, avec quelques graphiques pour vous aider à relier les commits).
Cela dépend de upstream
. Vous pouvez configurer une succursale en amont (serveur) pour votre succursale locale avec
$ git branch --set-upstream-to=origin/BRANCH
Cela définit également la cible par défaut pour vos git push
et git pull
.
Cependant, je ne pense pas que vous devriez vouloir définir une branche de fonctionnalité locale pour suivre un maître distant.
Dans le cadre de votre travail, cela vous a principalement amené à définir origin/master
comme branche de suivi pour feature-branch
dans un premier temps, puis à changer la branche de suivi en origin/feature_branch
. Les étapes peuvent définir / modifier la branche de suivi:
- Créez
feature-branch
pargit checkout -b feature_branch origin/master
. - Vous pouvez vérifier la relation des succursales de suivi avec les succursales locales en
git branch -vv
. La branche de suivi pourfeature_branch
estorigin/master
au début. - Une fois que vous avez apporté des modifications dans
feature_branch
et poussez-le vers la télécommande pargit push -u origin feature_branch
. - Vous modifiez maintenant la branche de suivi pour
feature_branch
enorigin/feature_branch
. Vous pouvez vérifier avantgit branch -vv
.
De nouvelles questions
git
Git est un système de contrôle de version distribué (DVCS) open source. Utilisez cette balise pour les questions relatives à l'utilisation et aux flux de travail de Git. N'UTILISEZ PAS la balise [github] pour les problèmes liés à Git simplement parce qu'un dépôt se trouve être hébergé sur GitHub. N'utilisez pas non plus cette balise pour les questions de programmation générales qui impliquent un référentiel Git.