2014-06-07 22 views
3

有兩個回購協議Github上:如何比較/ DIFF大師和叉式回購的特定版本在github上

「Repo1」是有定期提交一個主站(由我還沒有分叉) 「Repo2」是(大約2年前還沒分叉)

我想在兩個Repos之間做一個DIFF,根據「Repo1」中由「Repo2」分支的代碼版本(約2年前)。我的目標是從「Repo1」獲取最新的代碼,以及現在與「Repo2」隔離的更改,並將它們合併爲一個新的「Repo3」,將2年前添加到fork中的更改有效地帶入我的新最近代碼「Repo1」的分支。

我遇到的其中一個問題是,當我嘗試將多個叉形式分叉到相同的根/母時,它似乎無法工作,只是將我指回第一個叉。我想我需要在本地克隆每一個節點,並在那裏完成所需的工作,然後推回到一個新的乾淨的合併回購?

任何指導非常讚賞。

回答

2

我嘗試叉不止一個叉形成同根/主

您不必到餐桌以上的回購:叉只回購你的意圖做出貢獻(通過PR - 拉取請求)。在這裏,分叉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

爲Repo1已大爲感動以來Repo2是分叉的,我想先看看只有在製作分岔時原始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

甲三個點的diff將來自共同的祖先(git merge-base foo master

+0

由於馮diff的 - 由於Repo2已經分叉,因此Repo1已經發生了很大的變化,所以我希望首先看到*當時原始Fork(Repo2)和Repo1 *版本之間的核心變化叉被製成*。這種情況下,我可以如何區分每個版本的特定版本? – qtime67

+0

@ qtime67我編輯了我的答案以解決您的評論。 – VonC

+0

感謝您的回答!這兩個和使用'..'和'...'的差異的解釋。這對我幫助很大。 – nmindz