Cuando trabaja en algún directorio de Git, ¿cómo puede obtener el nombre del repositorio de Git en algún repositorio de Git? ¿Hay algún comando 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
fuente
fuente
Respuestas:
Bueno, si para el nombre del repositorio te refieres al nombre del directorio raíz de Git (el que contiene el directorio .git) puedes ejecutar esto:
La
git rev-parse --show-toplevel
parte le proporciona la ruta a ese directorio ybasename
elimina la primera parte de la ruta.fuente
.git
subdirectorio, por lo que no es cierto que "si, para el nombre del repositorio se refiere al nombre del directorio raíz de git".sed -n '1 p' test.ip | basename
basename`git rev-parse --show-toplevel
: / var / www "?? Como probablemente vea, esta línea no funcionará por usar `` inside ''git --git-dir=<some git repo>/.git rev-parse --show-toplevel
y le devolverá / var / www / htmlEn general, no puedes hacer esto. A Git no le importa cómo se nombra su repositorio de git. Por ejemplo, puede cambiar el nombre del directorio que contiene su repositorio (uno con
.git
subdirectorio), y git ni siquiera lo notará, todo continuará funcionando.Sin embargo, si lo clonó, puede usar el comando:
para mostrar mucha información sobre el control remoto original desde el que clonó su repositorio, y contendrá la URL de clonación original.
Sin embargo, si eliminó el enlace al control remoto original usando
git remote rm origin
, o si creó ese repositorio usandogit init
, tal información es simplemente imposible de obtener, no existe en ninguna parte.fuente
git branch
:) (la sucursal activa se marcará con una estrella*
).No es necesario ponerse en contacto con el repositorio para obtener el nombre, y el nombre de la carpeta no necesariamente reflejará el nombre remoto.
He descubierto que esta es la forma más precisa y eficiente de obtener el nombre del repositorio actual:
Esto debería funcionar a partir de Git 1.8.1.5. Antes de esto, el
git-repo-config
comando ahora en desuso habría funcionado (ya en Git 1.7.5).fuente
basename -s .git $(git --git-dir=/<project-path>/.git remote get-url origin)
En git v2.7.0 + ,
get-url
se introdujo un subcomando algit-remote
comando.POSIX shell:
Potencia Shell:
fuente
.git
final de mi cadena usando este método, así que agregué una división para quitarlo:(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()
Otras respuestas aún no funcionarán cuando el nombre de su directorio no se corresponda con el nombre del repositorio remoto (y podría). Puede obtener el nombre real del repositorio con algo como esto:
git remote show origin -n | grep "Fetch URL:" | sed -E "s#^.*/(.*)$#\1#" | sed "s#.git$##"
Básicamente, usted llama
git remote show origin
, tome la URL del repositorio del campo "Recuperar URL:" y regexifique para obtener la porción con el nombre: https://github.com/dragn/ neat-vimrc .gitfuente
git remote show origin -n
para evitar eso..git
con otra llamadased
, he actualizado el código en la respuesta. De esta manera funcionará, cuando la URL no termine con.git
.sed
funcionó mejor en mi Mac OSX:git remote show origin -n | grep h.URL | sed 's/.*://;s/.git$//'
Si está tratando de obtener el nombre de usuario o el nombre de la organización Y el nombre del proyecto o repositorio en github, pude escribir este comando que al menos me funciona localmente.
Este es el resultado deseado, como
Vydia
es el nombre de la organización ygourami
el nombre del paquete. Combinados pueden ayudar a formar elUser/Repo
camino completofuente
Creo que esta es una mejor manera de identificar inequívocamente un clon de un repositorio.
git config --get remote.origin.url
y verificando que el origen coincidassh://your/repo
.fuente
Un poco tarde para esta pregunta, pero si usted:
Verá la url del repositorio que incluirá el nombre de archivo:
fuente
Nombre completo del repositorio:
fuente
Este enfoque utilizando
git-remote
funcionó bien para mí para controles remotos HTTPS:Ejemplo
fuente
Aquí hay una función bash que imprimirá el nombre del repositorio (si se ha configurado correctamente):
Explicación:
Esto se ejecuta
git rev-parse --git-dir
, lo que imprime la ruta completa al.git
directorio del repositorio actual. Almacena el camino en$gitdir
.Esto se ejecuta
cat ${gitdir}/description
, lo que imprime el contenido.git/description
de su repositorio actual. Si ha nombrado correctamente su repositorio, imprimirá un nombre. De lo contrario, se imprimiráUnnamed repository; edit this file 'description' to name the repository.
Si el repositorio se denominó correctamente, imprima el contenido.
De otra manera...
Dígale al usuario que el repositorio no tiene nombre.
Algo similar se implementa en este script .
fuente
Desafortunadamente, parece que Git no tiene dicho comando incorporado. Pero puede agregarlo fácilmente con alias de Git y algo de magia de shell.
Como se señala en esta respuesta , puede usar
git rev-parse --show-toplevel
para mostrar la raíz de su carpeta Git actual.Si desea usar esto regularmente, probablemente sea más conveniente definirlo como un alias. Para esto, usado
git config alias.root '!echo "$(git rev-parse --show-toplevel)"'
. Después de esto, puede usargit root
para ver la carpeta raíz del repositorio en el que se encuentra actualmente.Si desea utilizar otro nombre de subcomando que no sea
root
, simplemente reemplace la segunda parte delalias.root
comando anterior con lo que desee.Para obtener detalles sobre los alias en Git, consulte también la
git config
página de manual .fuente
git config --add alias.root 'rev-parse --show-toplevel'
- no hay necesidad de lanzar el shell para un alias de comando único.Si desea todo el nombre del repositorio de GitHub ('nombre completo') - usuario / repositorio, y desea hacerlo con Ruby ...
fuente
Aquí está el mío:
no mejor que los demás, pero lo convertí en una función bash para poder colocar el nombre remoto si no es origen.
fuente
También encuentro que hay información de repositorio dentro del
.git
directorio. Entonces, solo puede ver elFETCH_HEAD
archivo en la terminal para ver el nombre del repositorio:Ejemplo:
Salida:
Y
https://bitbucket.org/somebituser/some_repo.git
es el nombre de tu repositoriofuente
Este funciona bastante bien con git-2.18.2 y se puede iniciar desde el repositorio de destino de git externo:
basename -s .git $(git --git-dir=/<project-path>/.git remote get-url origin)
fuente
Puedes usar: git remote -v
Documentación: https://git-scm.com/docs/git-remote
fuente
git remote -v
solo devuelve una o más URL. ¿Cómo responde esto a la pregunta?