Lorsque vous travaillez dans un répertoire Git, comment pouvez-vous obtenir le nom du référentiel Git dans un référentiel 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
git
repository
gipcompany
la source
la source
Réponses:
Eh bien, si, pour le nom du référentiel, vous voulez dire le nom du répertoire racine Git (celui qui contient le répertoire .git), vous pouvez exécuter ceci:
La
git rev-parse --show-toplevel
partie vous donne le chemin vers ce répertoire etbasename
supprime la première partie du chemin.la source
.git
sous - répertoire, donc ce n'est pas vrai que "si, pour le nom du référentiel, vous voulez dire le nom du répertoire racine git".sed -n '1 p' test.ip | basename
basename`git rev-parse --show-toplevel
: / var / www "?? Comme vous le voyez probablement, cette ligne ne fonctionnera pas à cause de l'utilisation de `` inside ''git --git-dir=<some git repo>/.git rev-parse --show-toplevel
et il vousEn général, vous ne pouvez pas faire cela. Git ne se soucie pas du nom de votre dépôt git. Par exemple, vous pouvez renommer le répertoire contenant votre référentiel (un avec un
.git
sous-répertoire), et git ne le remarquera même pas - tout continuera à fonctionner.Cependant, si vous l'avez cloné, vous pouvez utiliser la commande:
pour afficher de nombreuses informations sur la télécommande d'origine à partir de laquelle vous avez cloné votre référentiel, et il contiendra l'URL de clonage d'origine.
Si, cependant, vous avez supprimé le lien vers la télécommande d'origine à l'aide de
git remote rm origin
, ou si vous avez créé ce référentiel à l'aide degit init
, ces informations sont tout simplement impossibles à obtenir - elles n'existent nulle part.la source
git branch
:) (la branche active sera marquée d'une étoile*
).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 trouvé que c'était le moyen le plus précis et le plus efficace d'obtenir le nom du référentiel actuel:
Cela devrait fonctionner à partir de Git 1.8.1.5. Avant cela, la
git-repo-config
commande désormais obsolète aurait fonctionné (dès Git 1.7.5).la source
basename -s .git $(git --git-dir=/<project-path>/.git remote get-url origin)
Dans git v2.7.0 + , une sous-commande a
get-url
été introduite dansgit-remote
command.Shell POSIX:
PowerShell:
la source
.git
à la fin de ma chaîne en utilisant cette méthode, j'ai donc ajouté un split pour le dépouiller:(git remote get-url origin | Split-Path -leaf).split('.')[0]
trim()
def repo = powershell(returnStdout: true, script: "(git remote get-url origin | Split-Path -leaf).split('.')[0]" ).trim()
D'autres réponses ne fonctionneront toujours pas lorsque le nom de votre répertoire ne correspond pas au nom du référentiel distant (et cela pourrait). Vous pouvez obtenir le vrai nom du référentiel avec quelque chose comme ceci:
git remote show origin -n | grep "Fetch URL:" | sed -E "s#^.*/(.*)$#\1#" | sed "s#.git$##"
En gros, vous appelez
git remote show origin
, prenez l'URL du référentiel dans le champ "Fetch URL:" et regexez-la pour obtenir la partie avec le nom: https://github.com/dragn/ neat-vimrc .gitla source
git remote show origin -n
pour éviter cela..git
avec un autre appel àsed
, j'ai mis à jour le code dans la réponse. De cette façon, cela fonctionnera, lorsque l'URL ne se termine pas par.git
.sed
fonctionnait mieux sur mon Mac OSX:git remote show origin -n | grep h.URL | sed 's/.*://;s/.git$//'
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 au moins localement.
Il s'agit du résultat souhaité, tout comme
Vydia
le nom de l'organisation etgourami
le nom du package. Combinés, ils peuvent aider à former leUser/Repo
chemin completla source
Je pense que c'est une meilleure façon d' identifier sans ambiguïté un clone d'un référentiel.
git config --get remote.origin.url
et vérifier que l'origine correspondssh://your/repo
.la source
Un peu en retard pour cette question, mais si vous:
Vous verrez l'url du référentiel qui comprendra le reponame:
la source
Si vous voulez le nom complet du référentiel GitHub ('nom complet') - utilisateur / référentiel, et que vous voulez le faire avec Ruby ...
la source
Nom complet du repo:
la source
Cette approche
git-remote
a bien fonctionné pour moi pour les télécommandes HTTPS:Exemple
la source
Voici une fonction bash qui affichera le nom du référentiel (s'il a été correctement configuré):
Explication:
Ceci s'exécute
git rev-parse --git-dir
, ce qui imprime le chemin complet du.git
répertoire du référentiel currrent. Il stocke le chemin dans$gitdir
.Cela s'exécute
cat ${gitdir}/description
, ce qui imprime le contenu.git/description
de votre référentiel actuel. Si vous avez correctement nommé votre référentiel, il imprimera un nom. Sinon, il imprimeraUnnamed repository; edit this file 'description' to name the repository.
Si le référentiel a été correctement nommé, imprimez le contenu.
Autrement...
Dites à l'utilisateur que le dépôt n'a pas de nom.
Quelque chose de similaire est implémenté dans ce script .
la source
Malheureusement, il semble que Git n'ait pas une telle commande intégrée. Mais vous pouvez facilement l'ajouter vous-même avec des alias Git et un peu de magie du shell.
Comme indiqué par cette réponse , vous pouvez utiliser
git rev-parse --show-toplevel
pour afficher la racine de votre dossier Git actuel.Si vous souhaitez l'utiliser régulièrement, il est probablement plus pratique de le définir comme un alias. Pour cela, utilisé
git config alias.root '!echo "$(git rev-parse --show-toplevel)"'
. Après cela, vous pouvez utilisergit root
pour voir le dossier racine du référentiel dans lequel vous vous trouvez actuellement.Si vous souhaitez utiliser un autre nom de sous-commande que
root
, remplacez simplement la deuxième partie dealias.root
dans la commande ci-dessus par ce que vous voulez.Pour plus de détails sur les alias dans Git, consultez également la
git config
page de manuel .la source
git config --add alias.root 'rev-parse --show-toplevel'
- il n'est pas nécessaire de lancer le shell pour un alias à commande unique.Voici la mienne:
pas mieux que les autres, mais j'en ai fait une fonction bash pour que je puisse ajouter le nom distant s'il n'est pas origin.
la source
Aussi je trouve juste qu'il y a des informations de repo à l'intérieur du
.git
répertoire. Vous pouvez donc simplement regarder leFETCH_HEAD
fichier dans le terminal pour voir le nom du repo:Exemple:
Production:
Et
https://bitbucket.org/somebituser/some_repo.git
est le nom de votre référentiella source
Celui-ci fonctionne plutôt bien avec git-2.18.2 et peut être lancé depuis l'extérieur du référentiel cible git:
basename -s .git $(git --git-dir=/<project-path>/.git remote get-url origin)
la source
Vous pouvez utiliser: git remote -v
Documentation: https://git-scm.com/docs/git-remote
la source
git remote -v
renvoie simplement une ou plusieurs URL. Comment cela répond-il à la question?