我怎样才能确定本地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和pushInsteadOfconfiguration。
默认情况下,只列出第一个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。