Comment puis-je savoir sur quelle branche "parent" distante ma branche est basée?

j'ai un scénario dans lequel il y a plusieurs branches de suivi à distance dans mon dépôt local que je dois synchroniser. Notre modèle de flux de travail est:

  • créer une branche localement, basée sur la branche de suivi à distance désirée
  • faire nos modifications
  • créer/tester/corriger
  • valider
  • pousser vers le serveur distant

j'ai remarqué que "Statut git" ne me montre pas quelle branche ma branche locale est basée sur à moins que quelque chose n'ait changé, c'est-à-dire des changements locaux non engagés ou un fetch récent place ma branche locale derrière le times. Y a-t-il un moyen de savoir sur quelle branche est basée ma branche locale sans avoir à changer les choses? Quelque chose comme" git status-showparentbranch " ou une autre commande qui montrerait ceci. Parfois je rencontre ce besoin, mais ne sais pas encore comment la satisfaire.

31
demandé sur d3vid 2011-06-23 19:24:20

4 réponses

essaye ceci:

git log --graph --decorate
37
répondu elrrrrrrr 2015-11-25 10:32:35

Git ne fait pas le suivi des branches par lesquelles un commit a été passé. Il n'y a aucun moyen de savoir. Si les commits se sont produits sur votre rapport, alors vous pouvez inspecter le remodelage, mais c'est à peu près tout. Regardez l'explication du DAG dans le Pro Git livre - également lire sur reflog.

gitk --all ou git log --graph --decorate

J'espère que cela vous aidera.

16
répondu Adam Dymitruk 2016-09-08 21:33:01

git branch -vv:

  • liste vos filiales locales
  • afficher le nom de la branche distante à côté de chaque branche locale
  • mettre en évidence la branche locale active

...à partir de cela, vous pourrez déterminer la branche distante de la branche active actuelle, et plus encore.

Si vous avez beaucoup de branches locales, la liste peut être très longue. Utilisez git branch -vv | grep SOMEWORD pour limiter la sortie aux seules branches contenant SOMEWORD. Si vous pouvez penser à un mot unique à votre branche, vous obtiendrez le meilleur filtre (un seul résultat).

vous obtiendrez également quelques données supplémentaires dans la sortie, à savoir le nombre (SHA1) et le message de la dernière propagation. Le filtre grep s'appliquera à ceux-ci. Je ne pouvais pas trouver un moyen de l'exclure.

Git documentation de la Direction générale:

-v

-vv

-- verbose

en mode liste, Afficher sha1 et la ligne d'objet commit pour chaque tête, ainsi que la relation avec la branche amont (le cas échéant). S'il est donné deux fois, Imprimez aussi le nom de la branche amont (voir aussi git remote show ).

(D'après votre commentaire, oui, il semble que la question "correcte" poserait une question sur la branche "distante" plutôt que sur la branche "mère". Mais qu'est ce que je cherchais! :))

10
répondu d3vid 2013-10-25 11:02:35

Vous pouvez également donner à ceci un essai:

git rev-parse --abbrev-ref --symbolic-full-name @{u}

et en utilisant ce pseudonyme dans votre .gitconfig fichier:

[alias]
    showparentbranch = rev-parse --abbrev-ref --symbolic-full-name @{u}

vous pouvez alors simplement appeler:

git showparentbranch

testé sur Git version 2.10.2.Windows.1

3
répondu Stéphane Perras 2017-08-09 21:42:12