如何获得Git存储库&x27;Git存储库中的名字?
当您在某个Git目录中工作时,如何在某个Git存储库中获取Git存储库名称?有Git命令吗如何获得Git存储库&x27;Git存储库中的名字?,git,repository,Git,Repository,当您在某个Git目录中工作时,如何在某个Git存储库中获取Git存储库名称?有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 worki
# 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
#我确实查看了酒吧储存库并在某个地方工作
#此时在bar目录下如下图所示。
$git克隆git://github.com/foo/bar.git
$cd bar/baz/qux/qux/corge/grault#我在这里工作!
$git xxx#通常,您不能这样做。Git不关心Git存储库的命名方式。例如,您可以重命名包含您的存储库的目录(一个包含.git
子目录),git甚至不会注意到它—一切都将继续工作
但是,如果克隆了它,则可以使用以下命令:
git remote show origin
显示有关从中克隆存储库的原始远程服务器的大量信息,其中将包含原始克隆URL
但是,如果您使用git remote rm origin
删除了指向原始远程的链接,或者如果您使用git init
创建了存储库,则无法获取此类信息-它不存在于任何地方。不幸的是,git似乎没有内置此类命令。但是您可以使用Git别名和一些shell魔法轻松地添加它
正如所指出的,您可以使用git rev parse--show toplevel
来显示当前git文件夹的根目录
如果您想定期使用它,将其定义为别名可能更方便。为此,使用了git config alias.root'!echo“$(git rev parse--show top level)”
。之后,您可以使用git root
查看当前所在存储库的根文件夹
如果要使用除root
以外的其他子命令名,只需将上述命令中的alias.root
的第二部分替换为所需的名称即可
有关Git中别名的详细信息,请参见。如果存储库名称是指Git根目录名称(包含.Git目录的名称),则可以运行以下操作:
basename `git rev-parse --show-toplevel`
git rev parse--show toplevel
部分为您提供该目录的路径,而basename
将剥离路径的第一部分。当您的目录名称与远程存储库名称不对应时,其他答案仍然不起作用(它可以)。
您可以通过以下方式获得存储库的真实名称:
git-remoteshow-origin-n | grep“获取URL:| sed-E”s#^./(.*)$#\1#“| sed”s#.git$##”
基本上,您可以调用git remote show origin
,从“Fetch URL:”字段中获取存储库URL,并对其进行正则化以获取名称为的部分:
如果您想要整个GitHub存储库名称(“全名”)-user/repository,并且希望在Ruby中使用它
git remote show origin -n | ruby -ne 'puts /^\s*Fetch.*:(.*).git/.match($_)[1] rescue nil'
无需联系存储库获取名称,文件夹名称也不一定反映远程名称
我发现这是获取当前存储库名称最准确、最有效的方法:
basename -s .git `git config --get remote.origin.url`
这应该在Git 1.8.1.5中起作用。在此之前,现在不推荐使用的git repo config
命令(早在git 1.7.5中)就可以使用了。使用git remote的这种方法对HTTPS远程设备非常有效:
$ git remote -v | grep "(fetch)" | sed 's/.*\/\([^ ]*\)\/.*/\1/'
| | | |
| | | +---------------+
| | | Extract capture |
| +--------------------+-----+
|Repository name capture|
+-----------------------+
示例这是我的:
git remote --verbose | grep origin | grep fetch | cut -f2 | cut -d' ' -f1
不比其他的好,但是我把它做成了一个bash函数,这样如果它不是源代码,我就可以输入远程名称
grurl () {
xx_remote=$1
[ -z "$xx_remote" ] && xx_remote=origin
git remote --verbose | grep "$1" | grep fetch | cut -f2 | cut -d' ' -f1
unset xx_remote
}
您可以使用:
git远程-v
文件:
管理您跟踪其分支的存储库集(“远程”)。
-五
--verbose应该更详细一点,并在名称后显示远程url。注意:这必须放在远程命令和子命令之间
下面是一个bash函数,它将打印存储库名称(如果已正确设置):
说明:
local gitdir=$(git rev-parse --git-dir)
这将执行git rev parse--git dir
,它将打印当前存储库的.git
目录的完整路径。它将路径存储在$gitdir
中
if [ $(cat ${gitdir}/description) != "..." ]; then
这将执行cat${gitdir}/description
,它将打印当前存储库的.git/description
的内容。如果您正确命名了存储库,它将打印一个名称。否则,将打印未命名存储库;编辑此文件“说明”以命名存储库。
cat ${gitdir}/description
如果回购协议的名称正确,则打印内容
else
否则
echo "Unnamed repository!"
告诉用户回购协议未命名
类似的功能也在中实现。我认为这是一种更好的方法,可以明确地识别存储库的克隆
git config——获取remote.origin.url
并检查以确保源匹配ssh://your/repo
在中,在git remote
命令中引入了子命令get url
POSIX外壳:
basename$(git远程获取url来源)
PowerShell:
splitpath-Leaf(git-remote-get-url-origin)
另外,我刚刚发现.git
目录中有一些回购信息。因此,您只需在终端中观看FETCH_HEAD
文件即可查看回购协议的名称:
示例:
cd your_project_folder/.git
more FETCH_HEAD
672e38391557a192ab23a632d160ef37449c56ac https://bitbucket.org/fonjeekay/some_repo
输出:
cd your_project_folder/.git
more FETCH_HEAD
672e38391557a192ab23a632d160ef37449c56ac https://bitbucket.org/fonjeekay/some_repo
和https://bitbucket.org/somebituser/some_repo.git
是您存储库的名称回答此问题有点晚,但如果您:
cat /path/to/repo/.git/config
您将看到存储库的url,其中将包括reponame:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = https://github.com/your_git_user_name/your_git_repo_name.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
回购协议全称:
git config --get remote.origin.url | grep -Po "(?<=git@github\.com:)(.*?)(?=.git)"
git config--get remote.origin.url | grep-Po“(?如果您试图在github上获取用户名或组织名称以及项目或repo名称,我可以编写这个命令,它至少在本地对我有效
▶ git config--获取remote.origin.url
# => https://github.com/Vydia/gourami.git
▶ git config--get remote.origin.url | sed's/*\/\([^]*\/[^.]*\)./\1/'#捕获.git中点之前的最后两个路径段
#=>Vydia/go