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-toplevelparte le proporciona la ruta a ese directorio ybasenameelimina la primera parte de la ruta.fuente
.gitsubdirectorio, 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 | basenamebasename`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-toplevely 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
.gitsubdirectorio), 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-configcomando 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-urlse introdujo un subcomando algit-remotecomando.POSIX shell:
Potencia Shell:
fuente
.gitfinal 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 -npara evitar eso..gitcon otra llamadased, he actualizado el código en la respuesta. De esta manera funcionará, cuando la URL no termine con.git.sedfuncionó 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
Vydiaes el nombre de la organización ygouramiel nombre del paquete. Combinados pueden ayudar a formar elUser/Repocamino completofuente
Creo que esta es una mejor manera de identificar inequívocamente un clon de un repositorio.
git config --get remote.origin.urly 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-remotefuncionó 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.gitdirectorio del repositorio actual. Almacena el camino en$gitdir.Esto se ejecuta
cat ${gitdir}/description, lo que imprime el contenido.git/descriptionde 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-toplevelpara 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 rootpara 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.rootcomando anterior con lo que desee.Para obtener detalles sobre los alias en Git, consulte también la
git configpá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
.gitdirectorio. Entonces, solo puede ver elFETCH_HEADarchivo en la terminal para ver el nombre del repositorio:Ejemplo:
Salida:
Y
https://bitbucket.org/somebituser/some_repo.gites 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 -vsolo devuelve una o más URL. ¿Cómo responde esto a la pregunta?