就git show而言,起源和上游是不同的。
当我这样做
git remote -v
我知道
原始git@git.corelogic.local:corelogic / reports.git(获取)
原始git@git.corelogic.local:corelogic / reports.git(推送)
上游git@git.corelogic.local:corelogic / reports.git(获取)
上游git@git.corelogic.local:corelogic / reports.git(推送)
当我这样做
git show remotes/upstream/develop:oracle/framework/Programs/Populate_Datamart.sql
我在中央存储库@ git.corelogic.local上的分支开发中获取文件
当我这样做
git show remotes/origin/develop:oracle/framework/Programs/Populate_Datamart.sql
我在较早的提交时得到了该文件。 不一样!
答案 0 :(得分:1)
编辑以添加一个关键项(可能我应该首先列出它):Git不知道或不在乎两个遥控器下列出的两个URL使用相同的URL。
git remote
列出了您的远程操作。这些可能与您存储库中的实际内容几乎没有关系。
git show
显示存储库中的对象。这些与您的遥控器列表几乎没有关系。
通常,运行git fetch origin
将使您的Git与另一个Git联系,并使用远程名称origin
来获取URL。然后它将从其他Git中获取他们缺少的东西(无论出于什么原因-要么您从未拥有过它们,所以现在您这样做了;或者您说服Git摆脱了它们,所以现在他们回来了) 。然后,作为最后的工作,它将更新您的Git用来记住其他Git分支的远程跟踪名称。例如,您的origin/develop
(全名实际上是refs/remotes/origin/develop
,但是在大多数情况下您可以省去refs/
甚至是refs/remotes/
,现在您会记住他们的< / em> Git说,他们的 develop
是在您与他们交谈时。 (这可能会在删除对话后的几秒钟内过时,这取决于其他Git存储库的繁忙程度。)
运行git fetch upstream
会执行相同的操作,除了您的Git会调用其URL列出为远程名称upstream
的Git,然后将更新{{ 1}},而不是upstream/*
。
之后,您执行了这两次访存操作-或origin/*
,表示从所有遥控器进行访存-然后进行远程跟踪名称将具有您自己的本地存储库中现在存在的适当提交的哈希ID。然后,您的git fetch --all
可以向您显示这些提交或这些提交中的文件。