如何在github中比较/ diff特定版本的master和fork repo

时间:2014-06-07 14:38:11

标签: git github git-diff git-fork

Github有两个回购:

“Repo1”是一个有常规提交的主人(我还没分叉) “Repo2”是大约2年前Repo1的一个分支(尚未分叉)

我想在两个Repos之间做一个DIFF,基于“Repo1”中由“Repo2”(大约2年前)分支的代码版本。我的目标是从“Repo1”中获取最新的代码,以及现在从“Repo2”中分离出来的变化,并将这些变化合并为一个新的“Repo3”,有效地将2年前添加到fork中的更改添加到我的新最新代码“Repo1”的分支。

我遇到的一个问题是,当我尝试将多个Fork形式分叉到相同的root / master时,它似乎无法工作,只需将我指向第一个fork即可。我想我需要在本地克隆everythign,并在那里完成所需的工作,然后推回到一个新的干净的合并仓库?

非常感谢任何指导。

1 个答案:

答案 0 :(得分:2)

  

我尝试将多个Fork形式分叉为相同的root / master

您不必分叉多个仓库:只分叉您想要贡献的仓库(通过PR - Pull Request)。在这里,fork Repo1,然后在本地克隆它。

在您的本地克隆上,键入:

git remote add /url/repo2
git fetch repo2

然后你可以diff between master and repo2/master

git diff repo2/master..master

点击“Showing which files have changed between git branches

了解详情
git diff --name-status repo2/master..master

OP qtime67添加in the comments

  由于Repo2已经分叉,Repo1已经大大增加了,我希望首先看到原来的Fork(Repo2)和叉子制造时的Repo1版本之间的核心变化。

如“Git diff .. ? What's the difference between having .. and no dots”中所述,这将使用三个点:

git diff repo2/master...master
git diff master...repo2/master

http://sphinx.mythic-beasts.com/~mark/git-diff-help.png

三点差异将来自共同的祖先(git merge-base foo master