我怎样才能确定本地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 mathstufmathstuf ) 提交的96f78d3 (2015年9月16日) 。
(由Junio C gitster合并- gitster – in e437cbd ,2015年10月5日)

远程:添加get-url子命令

扩展insteadOfls-remote --url的一部分,无法扩展pushInsteadOf
添加get-url子命令以便能够查询两者以及获取所有configuration的URL的方法。

 get-url: 

检索远程的URL。
这里展开了insteadOfpushInsteadOfconfiguration。
默认情况下,只列出第一个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 

一些信息:

  1. $ git remote -v会打印所有的遥控器(不是你想要的)。 你想要起源吗?
  2. $ 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/configremote["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。