Descubrir el nombre del repositorio original desde el que clonó en Git


Respuestas:


91

En la raíz del repositorio, el .git/configarchivo contiene toda la información sobre repositorios y sucursales remotos. En su ejemplo, debería buscar algo como:

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = server:gitRepo.git

Además, el comando Git git remote -vmuestra el nombre y la URL del repositorio remoto. El repositorio remoto "origen" generalmente corresponde al repositorio original, desde el cual se clonó la copia local.


16
También puede usar git remote show originpara ver mucha más información sobre ese control remoto.
Cascabel

1
Parece que estos dos métodos en la Respuesta son equivalentes, parece que git remote -vsolo lee y escribe .git/config.
flow2k

103
git config --get remote.origin.url

2
Convenido; esto es mejor porque no requiere una conexión / autenticación al servidor remoto de git. OP preguntó "usando su repositorio local" pero git remote show originllama a la red.
Travis Wilson

1
Esto envuelto en un nombre de base como la respuesta de Casey funciona bien
Jonathan Drapeau

29

Este es un comando rápido de Bash, que probablemente esté buscando, imprimirá solo un nombre base del repositorio remoto:

Cuando usted lo trae desde :

basename $(git remote show -n origin | grep Fetch | cut -d: -f2-)

Alternativamente, donde empuja a :

basename $(git remote show -n origin | grep Push | cut -d: -f2-)

Especialmente la -nopción hace que el comando sea mucho más rápido.


11

Yo uso esto:

basename $(git remote get-url origin) .git

Lo que devuelve algo como gitRepo. (Quite el .gital final del comando para devolver algo como gitRepo.git).

(Nota: Requiere Git versión 2.7.0 o posterior)


2

Me encontré con esta pregunta tratando de obtener la organization/repocadena de un host de git como github o gitlab.

Esto es trabajo para mí:

git config --get remote.origin.url | sed -e 's/^git@.*:\([[:graph:]]*\).git/\1/'

Se usa sedpara reemplazar la salida del git configcomando con solo la organización y el nombre del repositorio.

Algo parecido github/scientista coincidiría con la clase de carácter [[:graph:]]en la expresión regular.

El \1le dice a sed que reemplace todo solo con los caracteres coincidentes.


error tipográfico al final dice .get en lugar de .git ---- git config --get remote.origin.url | sed -e 's/^git@.*:\([[:graph:]]*\).git/\1/'
MSillence

Gracias @MSillence, arreglado.
jhnstn

0
git remote show origin -n | ruby -ne 'puts /^\s*Fetch.*(:|\/){1}([^\/]+\/[^\/]+).git/.match($_)[2] rescue nil'

Se probó con tres estilos de URL diferentes:

echo "Fetch URL: http://user@pass:gitservice.org:20080/owner/repo.git" | ruby -ne 'puts /^\s*Fetch.*(:|\/){1}([^\/]+\/[^\/]+).git/.match($_)[2] rescue nil'
echo "Fetch URL: Fetch URL: git@github.com:home1-oss/oss-build.git" | ruby -ne 'puts /^\s*Fetch.*(:|\/){1}([^\/]+\/[^\/]+).git/.match($_)[2] rescue nil'
echo "Fetch URL: https://github.com/owner/repo.git" | ruby -ne 'puts /^\s*Fetch.*(:|\/){1}([^\/]+\/[^\/]+).git/.match($_)[2] rescue nil'

1
explica lo que hiciste, cómo responder
Maher

Quizás agregue más información, por ejemplo, sobre la dependencia de Ruby y en qué plataforma se probó (incluida la información de la versión).
Peter Mortensen

0

Esto funcionará para obtener el valor.

#!/usr/bin/env bash
repoSlug="$(git config --get remote.origin.url | cut -d/ -f5 | cut -d. -f1)"
echo ${repoSlug}

0

Versión de Powershell del comando para el nombre del repositorio de git:

(git config --get remote.origin.url) -replace '.*/' -replace '.git'
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.