2010-09-25 70 views
25

我已經在github上分支了一個項目,並且需要有一組我在分叉格式化後做出的更改。如何查看分叉github項目的差異

如果你想知道 - 我已經分叉了Apache httpd,並且正在改變核心中的一些代碼。目前我沒有提交任何更改,運行git diff,並將其輸出用作RPM構建過程中針對vanilla httpd源的修補程序。當然,這是錯誤的,但我不知道如何正確地做到這一點。我所知道的是我最終需要一個差異。

回答

25
  • 將當初的GitHub回購(您已分叉的回購)作爲遠程回購添加到您的本地回購。
    git remote add mainRepo github_url
  • git fetch mainRepo得到從原來的 「mainRepo」 的最新變化。
  • git log HEAD..mainRepo/master將向您顯示mainRepo主分支上的最新分支與當前分支之間的所有更改。
    git diff HEAD..mainRepo/master將以diff格式顯示它。

learn.GitHub

git diff mainRepo/master...HEAD 

將列出所有更改,因爲你已經從mainRepo分叉:

這不會比過去的「主」分支快照和最後一個「開發'快照 - 它會將兩者的共同祖先與'dev'進行比較。這將告訴你自分支點以來發生了什麼變化。

+0

非常感謝你,這解決了我的問題。我絕對需要花一些時間來深入理解git哲學。 – GDR 2010-09-27 09:42:58

+0

+1。如果我可以添加兩個註釋:如果您目前在頭上,我相信HEAD部分是不必要的。另外,如果你想查看你配置的difftool中的變化,'git difftool mainrepo/master'和'git difftool ..mainrepo/master'是很有用的。 – 2013-01-11 16:49:24

+0

如何通過TortoiseGit查看分叉項目的差異 - http://stackoverflow.com/a/7297491/968003 – 2016-12-28 05:07:09

2

獲取父/叉點SHA1:git merge-base master HEAD 獲取DIFF:git diff <sha1>

或者在一個命令:git difftool $(git merge-base master HEAD)

這是一樣的糖命令:git diff master...HEAD

0

這是一個老問題,但我只是找到了一個非常好的方法來直接從Github獲得補丁或diff文件。

當您在叉子上時,有一個「比較」鏈接。使用你得到的比較視圖。

https://github.com/luisgoncalves/xades4j/compare/master...beat2:master 

現在你可以手動添加或者「爲.diff」或「.patch」這個URL的結束,您可以直接在瀏覽器中得到的文件。

https://github.com/luisgoncalves/xades4j/compare/master...beat2:master.diff 

來源:https://github.com/blog/967-github-secrets