web-dev-qa-db-fra.com

Comment 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 référentiel local que je dois synchroniser. Notre modèle de workflow est:

  • créer une branche localement, basée sur la branche de suivi à distance souhaitée
  • faire nos changements
  • construire/tester/réparer
  • commettre
  • Repousser vers le serveur distant

J'ai remarqué que "git status" ne m'affiche pas sur quelle branche ma branche locale est basée sauf si quelque chose a changé; c'est-à-dire que des modifications locales non validées ou une extraction récente mettent ma branche locale en retard. Existe-t-il un moyen de savoir sur quelle branche ma branche locale est basée sans avoir à changer les choses? Quelque chose comme "git status -showparentbranch" ou une autre commande qui le montrerait. Parfois, je rencontre ce besoin mais je ne sais pas encore comment le satisfaire.

33
Andrew Falanga

essaye ça:

git log --graph --decorate
41
elrrrrrrr

Git ne suit pas les branches par lesquelles un commit a été passé. Il n'y a aucun moyen de le savoir. Si les commits se sont produits sur votre dépôt, vous pouvez inspecter le reflog, mais c'est à peu près tout. Jetez un oeil à l'explication du DAG dans le livre Pro Git - lisez également sur reflog là-dedans.

Vous pouvez également mieux visualiser l'historique avec gitk --all ou git log --graph --decorate

J'espère que cela t'aides.

17
Adam Dymitruk

git branch -vv volonté:

  • liste toutes vos succursales 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 succursales locales, la liste peut être très longue. Utilisation git branch -vv | grep SOMEWORD pour limiter la sortie aux seules branches contenant SOMEWORD. Si vous pensez à un mot unique à votre branche, vous obtiendrez le meilleur filtre (un seul résultat).

Vous obtiendrez également des données supplémentaires dans la sortie, à savoir le numéro (SHA1) et le message du dernier commit. Le filtre grep s'appliquera à ceux-ci. Je n'ai pas pu trouver un moyen de l'exclure.

Depuis Git documentation de branche :

-v

-vv

--verbeux

En mode liste, affichez sha1 et validez la ligne d'objet pour chaque tête, ainsi que la relation avec la branche en amont (le cas échéant). Si donné deux fois, imprimez également le nom de la branche en amont (voir aussi git remote show).

(Sur la base de votre commentaire, oui, il semble que la "bonne" question poserait sur la branche "distante" plutôt que sur la branche "parent". Mais c'est ce que j'ai cherché aussi! :))

11
david.libremone

Vous pouvez également essayer ceci:

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

Et en utilisant cet alias dans votre fichier .gitconfig:

[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

1
Stéphane Perras