217 votes

Comment obtenir le nom du dépôt Git dans un autre dépôt Git ?

Lorsque vous travaillez dans un répertoire Git, comment pouvez-vous obtenir le nom du dépôt Git dans un dépôt Git ? Existe-t-il des commandes Git ?

# I did check out bar repository and working in somewhere 
# under bar directory at this moment such as below.

$ git clone git://github.com/foo/bar.git
$ cd bar/baz/qux/quux/corge/grault # and I am working in here!
$ git xxx # <- ???
bar

215voto

Fuad Saud Points 192

Eh bien, si, pour le nom du dépôt, vous voulez dire le nom du répertoire racine de Git (celui qui contient le répertoire .git), vous pouvez exécuter ceci :

basename `git rev-parse --show-toplevel`

El git rev-parse --show-toplevel vous donne le chemin d'accès à ce répertoire et basename dépouille la première partie du chemin.

170voto

mvp Points 29360

En général, vous ne pouvez pas le faire. Git ne se soucie pas de la façon dont votre dépôt git est nommé. Par exemple, vous pouvez renommer le répertoire contenant votre dépôt (un avec .git ), et git ne le remarquera même pas - tout continuera à fonctionner.

Cependant, si vous l'avez cloné, vous pouvez utiliser la commande :

git remote show origin

pour afficher un grand nombre d'informations sur le dépôt original à partir duquel vous avez cloné votre dépôt, et il contiendra l'URL du clone original.

Si, par contre, vous avez supprimé le lien vers la télécommande d'origine en utilisant git remote rm origin ou si vous avez créé ce référentiel à l'aide de la commande git init Il est tout simplement impossible d'obtenir de telles informations, qui n'existent nulle part.

149voto

TastyWheat Points 691

Il n'est pas nécessaire de contacter le référentiel pour obtenir le nom, et le nom du dossier ne reflétera pas nécessairement le nom distant.

J'ai constaté que c'est le moyen le plus précis et le plus efficace d'obtenir le nom du dépôt actuel :

basename -s .git `git config --get remote.origin.url`

Cela devrait fonctionner à partir de Git 1.8.1.5. Auparavant, l'option désormais obsolète git-repo-config aurait fonctionné (dès Git 1.7.5).

44voto

vulcan raven Points 8312

En git v2.7.0+ une sous-commande get-url a été présenté à git-remote commandement.

Shell POSIX :

basename $(git remote get-url origin)

PowerShell :

Split-Path -Leaf (git remote get-url origin)

25voto

animatedgif Points 181

Si vous essayez d'obtenir le nom d'utilisateur ou le nom de l'organisation ET le nom du projet ou du repo sur github, j'ai pu écrire cette commande qui fonctionne pour moi localement du moins.

 git config --get remote.origin.url
# => https://github.com/Vydia/gourami.git

 git config --get remote.origin.url | sed 's/.*\/\([^ ]*\/[^.]*\).*/\1/' # Capture last 2 path segments before the dot in .git
# => Vydia/gourami

C'est le résultat souhaité car Vydia est le nom de l'organisation et gourami est le nom du paquet. Combinés, ils peuvent contribuer à former le User/Repo chemin

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X