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?

1
nishant 20 avril 2017 à 02:14

3 réponses

Meilleure réponse

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).

3
Community 23 mai 2017 à 12:34

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.

1
Viktor Seč 19 avril 2017 à 23:45

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:

  1. Créez feature-branch par git checkout -b feature_branch origin/master.
  2. Vous pouvez vérifier la relation des succursales de suivi avec les succursales locales en git branch -vv. La branche de suivi pour feature_branch est origin/master au début.
  3. Une fois que vous avez apporté des modifications dans feature_branch et poussez-le vers la télécommande par git push -u origin feature_branch.
  4. Vous modifiez maintenant la branche de suivi pour feature_branch en origin/feature_branch. Vous pouvez vérifier avant git branch -vv.
0
Marina Liu 20 avril 2017 à 05:16