我怎样才能确定本地Git存储库最初克隆的URL?
我前几天从GitHub上拉了一个项目。 我发现GitHub上有几个叉子,我忽略了我最初拿的是哪一个。 我怎样才能确定哪些叉子我拉?
如果参照完整性被破坏:
git config --get remote.origin.url
如果参照完整性保持不变:
git remote show origin
当使用git clone
(来自GitHub或任何源代码仓库)时,克隆源的默认名称是“origin”。 使用git remote show
将显示关于这个远程名称的信息。 前几行应该显示:
C:\Users\jaredpar\VsVim> git remote show origin * remote origin Fetch URL: git@github.com:jaredpar/VsVim.git Push URL: git@github.com:jaredpar/VsVim.git HEAD branch: master Remote branches:
如果要使用脚本中的值,则可以使用此答案中列出的第一个命令。
如果你想要这个脚本的目的,你只能得到的URL
git config --get remote.origin.url
你可以试试:
git remote -v
它将打印所有遥控器的提取/推送url。
为了得到答案:
git ls-remote --get-url [REMOTE]
这比读取configuration更好; 请参阅git-ls-remote
的手册页 :
–get-URL
考虑到任何
"url.<base>.insteadOf"
configuration设置(参见git-config(1)
),扩展给定远程存储库的URL,并退出而不与远程进行通话。
正如@Jefromi指出的那样,这个选项是在v1.7.5中添加的,直到v1.7.12.2才被logging下来 。
使用Git 2.7(2015年1月5日发布),您可以使用git remote
获得更加一致的解决scheme:
git remote get-url origin
(漂亮的git remote set-url origin <newurl>
)
见Ben mathstuf
( mathstuf
) 提交的96f78d3 (2015年9月16日) 。
(由Junio C gitster
合并- gitster
– in e437cbd ,2015年10月5日) :
远程:添加get-url子命令
扩展
insteadOf
是ls-remote --url
的一部分,无法扩展pushInsteadOf
。
添加get-url
子命令以便能够查询两者以及获取所有configuration的URL的方法。
get-url:
检索远程的URL。
这里展开了insteadOf
和pushInsteadOf
configuration。
默认情况下,只列出第一个URL。
- 使用' – push',查询推送URL而不是获取URL。
- 使用“
--all
”,将列出远程的所有URL。
在git 2.7之前,你有:
git config --get remote.[REMOTE].url git ls-remote --get-url [REMOTE] git remote show [REMOTE]
总而言之,至less有四种方法:
(以下是官方的Linux存储库的尝试)
最less信息:
$ git config --get remote.origin.url https://github.com/torvalds/linux.git
和
$ git ls-remote --get-url https://github.com/torvalds/linux.git
更多信息:
$ git remote -v origin https://github.com/torvalds/linux.git (fetch) origin https://github.com/torvalds/linux.git (push)
更多信息:
$ git remote show origin * remote origin Fetch URL: https://github.com/torvalds/linux.git Push URL: https://github.com/torvalds/linux.git HEAD branch: master Remote branch: master tracked Local branch configured for 'git pull': master merges with remote master Local ref configured for 'git push': master pushes to master (up to date)
简短的回答:
$ git remote show -n origin
或者,纯粹的快速脚本的替代scheme:
$ git config --get remote.origin.url
一些信息:
-
$ git remote -v
会打印所有的遥控器(不是你想要的)。 你想要起源吗? -
$ git remote show origin
好得多,只显示origin
但花费太长时间(在git版本1.8.1.msysgit.1上testing)。
我结束了: $ git remote show -n origin
,这似乎是最快的。 使用-n
它不会获取远程头(AKA分支)。 你不需要这种types的信息,对吧?
http://www.kernel.org/pub//software/scm/git/docs/git-remote.html
你可以申请| grep -i fetch
| grep -i fetch
所有三个版本,只显示抓取url。
如果你需要纯粹的速度,那么使用:
$ git config --get remote.origin.url
感谢@Jefromi指出这一点。
我想你可以在.git/config
和remote["origin"]
下find它,如果你没有处理它的话。
获取origin
IP地址/主机名
对于ssh://
存储库:
git ls-remote --get-url origin | cut -f 2 -d @ | cut -f 1 -d "/"
对于git://
存储库:
git ls-remote --get-url origin | cut -f 2 -d @ | cut -f 1 -d ":"
上游的遥控器可能不被称为“起源”,所以这里有一个变化:
remote=$(git config --get branch.master.remote) url=$(git config --get remote.$remote.url) basename=$(basename "$url" .git) echo $basename
要么:
basename $(git config --get remote.$(git config --get branch.master.remote).url) .git
更有用的variables有:
$ git config -l
打印任意命名的远程抓取url:
git remote -v | grep fetch | awk '{print $2}'
为了补充其他的答案:如果遥控器由于某种原因被改变了,所以不能反映原始的来源,reflog中的第一个条目(即由命令git reflog
显示的最后一个条目)应该指出回购是最初从克隆。
例如
$ git reflog | tail -n 1 f34be46 HEAD@{0}: clone: from https://github.com/git/git $
(请记住reflog可能被清除,所以这不能保证工作。)
与git远程显示起源,你必须在项目目录。 但是,如果你想确定你可以使用的任何地方的url
cat <path2project>/.git/config | grep url
如果你经常需要这个命令,你可以在你的.bashrc
或.bash_profile
中用MacOS定义一个别名。
alias giturl='cat ./.git/config | grep url'
所以你只需要在git根文件夹中调用giturl
来获得简单的URL。
简单的方法打开.git / config文件
cat .git/config
编辑
vim .git/config
或者
nano .git/config
如果您不知道分支的上游远程设备的名称,可以先查看当前分支的上游分支名称。 使用这样的git rev-parse
:
git rev-parse --symbolic-full-name --abbrev-ref @{upstream}
这表明上游分支是当前分支的来源。 这可以parsing得到这样的远程名称:
git rev-parse --symbolic-full-name --abbrev-ref @{upstream} | cut -d / -f 1
现在拿这个,把它连接到git ls-remote
,你会得到当前分支源的上游远程的URL:
git ls-remote --get-url \ $(git rev-parse --symbolic-full-name --abbrev-ref @{upstream} | cut -d / -f 1)
现在应该指出,这不一定是从源克隆的源远程存储库。 然而在许多情况下,这将是足够的。
git的URL将在git的configuration文件中。 值会固化到关键的url
cd project_dir cat .git/config | grep url | awk '{print $3}'
我基本上使用:
git remote get-url origin
它适用于Windows中的git bash命令控制台或cmd命令控制台。 这就是说,它适用于Git版本2.x。