如何从分叉回购比较github中的本地分支?

时间:2021-03-12 19:40:03

标签: git github

“本地”不是指开发机器的本地。我的意思是,当您登录 GitHub 时,您导航到的存储库中的分支直接位于您从中分叉的存储库中的分支。

所以我可以访问一个用户的存储库,该存储库是从另一个我无权访问的用户的存储库分叉出来的。

当我在该用户的存储库上创建一个分支时,有时我想与 SAME 存储库(我有权访问的那个)上的默认分支进行比较。但是,它始终默认与产生 404 的上游存储库进行比较,因为我无权访问该存储库。

然后我使用“跨叉比较”链接。这在很长一段时间内都令人困惑,因为下拉菜单会显示我想要的帐户/回购,并且当我单击下拉菜单时,它也是被检查的那个。但是我在下一个下拉菜单中找不到我的分支。我终于发现 GitHub 在骗我。即使它说我想要的帐户/回购已经被选中;不是。它确实选择了上游帐户/回购。所以现在我知道我必须实际点击正确的一个(据称已经选择了;但不是真的)。然后它会带我到一个页面,在那里我可以选择我的分支并进行我最初想要的比较。

所以在这里回顾一下我必须做的:

  1. 在选择了默认分支的 repo 页面中,点击 Compare 链接
  2. 点击跨叉比较链接。
  3. 从下拉列表中选择我想要的帐户/存储库(已选择;但不是真的)
  4. 从基础下拉菜单中选择 InsiderCharts 分支。

我对 Git 还是很陌生,所以我想弄清楚我是否以某种方式接近这个错误,应该以不同的方式来做……或者这只是 GitHub 中的一个可怕的错误,让生活变得悲惨对于已经无法弄清楚该死的事情的新用户?

我不得不说我不是 Git 的粉丝。我很想在这里进一步抱怨我的挫败感……但我想我会饶恕你的,因为这不是真正的地方。 :)

1 个答案:

答案 0 :(得分:2)

<块引用>

然后我使用“跨叉比较”链接。这在很长一段时间内都令人困惑,因为下拉菜单会显示我想要的帐户/回购,并且当我单击下拉菜单时,它也是被检查的那个。但是我在下一个下拉菜单中找不到我的分支。我终于发现 GitHub 在骗我。

重要的是要意识到有些东西是 Git,而有些东西专门是 GitHub。分叉——至少,GitHub 实现它们的方式——是特定于 GitHub 的。所有Git 都是克隆

那么:克隆和分叉有什么区别?有很多小的差异,但最重要的是,虽然分叉是克隆,但克隆不是分叉。分叉是具有额外功能的克隆,例如“拉取请求”(当然还有“跨分叉比较”)。您在此处询问的所有内容都是这些额外功能之一。

至于 GitHub 为何对您说谎:在这种特殊情况下,我不知道。在最一般的情况下,有时他们不得不这样做,因为某些存储库中的某些内容是受限制的或私有的。您将获得一个克隆,并且所有 clone 部分都可以工作,因为它们由 Git 本身直接处理,然后有人会更改您克隆的存储库的某些内容,并且附加功能将中断。

在大多数情况下,我通常尽量避免使用 GitHub Web 界面。如果我有一个 GitHub 存储库 G,它是“上游”GitHub 存储库 U 的 GitHub 分支,我将保留一个真正本地的 Git 存储库——我自己的克隆,在我自己的计算机——并使用 origin 从我的计算机引用存储库 G,并使用 upstream——或一些更好的名称,因为我必须自己分配它,而不是 {当我运行 origin 时,Git 为我制作的 {1}} 是我自己的 - 从我的计算机引用存储库 U

为了实现“跨叉比较”,我只是从 git cloneorigin(或它可能具有的任何名称)中获取。然后我在自己的计算机上本地拥有所有提交,在那里我可以在本地比较它们,在本地查看它们,等等。

这是 upstream 真正有用的地方:git fetch --all 表示 从所有遥控器获取。在这种情况下,即 --allorigin。但是请注意,如果您开始处理这些更复杂的情况——尤其是那些有两个以上额外存储库的情况——您可能需要考虑使用 upstream 和/或定义远程 . Git 中有很多东西可以处理这些不寻常的情况,大多数人从来不需要担心。