使用语法
进行第一次克隆时git clone username@server:gitRepo.git
是否可以使用本地存储库查找该初始克隆的名称? (所以在上面的例子中找到gitRepo.git)
答案 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}