找出您在Git中克隆的原始存储库的名称

时间:2010-11-02 09:12:56

标签: git version-control configuration-files

使用语法

进行第一次克隆时
git clone username@server:gitRepo.git

是否可以使用本地存储库查找该初始克隆的名称? (所以在上面的例子中找到gitRepo.git)

8 个答案:

答案 0 :(得分:80)

在存储库根目录中,.git / config文件包含有关远程存储库和分支的所有信息。在你的例子中,你应该寻找类似的东西:

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

此外,git命令:git remote -v显示远程存储库名称和URL。 “origin”远程存储库通常对应于原始存储库,克隆了本地副本。

答案 1 :(得分:74)

git config --get remote.origin.url

答案 2 :(得分:26)

这是你可能正在搜索的快速bash命令 将仅打印远程存储库的基本名称

从获取的地方:
basename $(git remote show -n origin | grep Fetch | cut -d: -f2-)

或者你将推到的地方:
basename $(git remote show -n origin | grep Push | cut -d: -f2-)

尤其是 -n 选项可让命令更快

答案 3 :(得分:6)

我用这个:

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

返回gitRepo之类的内容。 (删除命令末尾的.git以重新调整gitRepo.git之类的内容。)

(注意:需要git> = 2.7.0)

答案 4 :(得分:0)

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

以3 url风格测试:

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'

答案 5 :(得分:0)

我偶然遇到了这个问题,试图从github或gitlab之类的git主机获取EffectsModule.forRoot([]), 字符串。

这对我有用:

organization/repo

它使用git config --get remote.origin.url | sed -e 's/^git@.*:\([[:graph:]]*\).get/\1/' 仅将组织和存储库名称替换sed命令的输出。

正则表达式中的字符类git config将与github/scientist之类的东西匹配。

[[:graph:]]告诉sed仅用匹配的字符替换所有内容。

答案 6 :(得分:0)

git仓库名称的命令的Powershell版本:

(git config --get remote.origin.url) -replace '.*/' -replace '.git'

答案 7 :(得分:-1)

为清楚起见而编辑:

如果 remote.origin.url 的格式为 protocol:// auth_info @ git_host:port / project / repo.git ,这将获得值。 >。如果您发现它不起作用,请调整第一个cut命令中的 -f5 选项。

对于 protocol:// auth_info @ git_host:port / project / repo.git 的示例 remote.origin.url ,由剪切创建的输出命令将包含以下内容:

-f1:协议: -f2 :(空白) -f3:auth_info @ git_host:port -f4:项目 -f5:repo.git

如果遇到问题,请查看git config --get remote.origin.url命令的输出,以查看哪个字段包含原始存储库。如果 remote.origin.url 不包含 .git 字符串,则忽略第二个 cut 命令的管道。

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