2010-06-19 630 views
20

我已经在Github上分支了一个项目的git仓库,并对其进行了自己的更改。 我想知道我的存储库和我分叉的原始存储库 之间的区别。有人可以告诉我git命令 以获得该差异吗? 我需要提交差异以供审查。找到两个git仓库之间的差异

原件存放:

git://github.com/apache/hive.git 

我的资料库:

[email protected]:prafullat/hive.git 

下面是我.git/config

[remote "origin"] 
    fetch = +refs/heads/*:refs/remotes/origin/* 
    url = [email protected]:prafullat/hive.git 
[remote "mirror"] 
    fetch = +refs/heads/*:refs/remotes/origin/* 
    url = git://github.com/apache/hive.git 

细节我试图寻找其他发布关于同一主题的问题和 无法正常工作。

任何帮助将不胜感激。

+0

可能重复http://stackoverflow.com/questions/687450/how-do-i-compare-两个git版本库) – 2014-08-30 18:20:51

+0

[获取两个版本库之间的差异](http://stackoverflow.com/questions/1968512/getting-the-difference-between-two-repositories) – Rumid 2017-02-16 10:27:45

回答

3

手动获取提交sha1并在差异中使用它们 解决了问题!

 
[[email protected] .git] $cd refs/remotes/ 
[[email protected] remotes] $cat origin/trunk 
1c4fa827f4fad2aad67a4fa5b57d88afe51d1559 
[[email protected] remotes] $cat mirror/trunk 
14f5fb7cba7bef466727a5b721c7c202e80e5dfd 
[[email protected] remotes] $git diff 14f5fb7cba7bef466727a5b721c7c202e80e5dfd 1c4fa827f4fad2aad67a4fa5b57d88afe51d1559 
....... 
.... diff follows!....... 

2
git diff origin/master mirror/master 

沿东西应该做的伎俩。

+8

它给出了这个错误。 git diff遥控器/原始遥控器/镜子 致命:模棱两可的参数“遥控器/原点”:未知修订或路径不在工作树中。 使用' - '分隔修订版本的路径 – Prafulla 2010-06-19 12:31:00

15

您需要获取两个远程存储库的最新版本,并将主分支互相比较。它看起来像主枝是“树干”分支,所以你可以看到什么提交的(在“镜子”项目的主干分支,而不是)唯一的项目是这样的:

$ git log --oneline origin/trunk ^mirror/trunk 
1c4fa82 1. Modified the flag name for gb_to_idx rewrite to hive.ql.rewrite.gb_to_idx So 
638be54 Merge branch 'trunk' of [email protected]:prafullat/hive into trunk 
72c8220 HIVE-1383. Allow HBase WAL to be disabled (John Sichi via Ning Zhang) 
a372259 Checking in commented meta-data methods in GbToCompactSumIdxRewrite. It has to be unc 
33c1fb1 Fixing some files due to wrong application of patch. Build now compiles ! 
5942728 Reverting files which were patched twice in last checkin. 
5efda04 Adding inital rewrite changes. This patch adds basic query rewrite support to Hive. I 
3fce190 Merge branch 'trunk' of git://github.com/apache/hive into trunk 
b3f9ff2 Checking in commented meta-data methods in GbToCompactSumIdxRewrite. It has to be unc 
d89deb9 Fixing some files due to wrong application of patch. Build now compiles ! 
11db7da Reverting files which were patched twice in last checkin. 
88fee30 Adding inital rewrite changes. 
ba7703f Some part of last check-in got missed. 
2c5c5ae Checking initial changes for Hive indexing from He Yongqiang (Hive-417) Here is descr 

或者你可以删除--oneline以查看完整的提交消息。看起来他们都是你的。如果您不想看到这些合并提交,也可以添加--no-merges

接下来,您可以通过运行该得到实际的差异:

$ git diff --stat mirror/trunk...origin/trunk 
README.txt           | 4 +- 
build.xml           | 1 + 
.../java/org/apache/hadoop/hive/conf/HiveConf.java | 1 + 
ivy/ivysettings.xml        | 4 +- 
metastore/if/hive_metastore.thrift     | 12 +- 
.../apache/hadoop/hive/metastore/api/Index.java | 15 +- 
.../hive/metastore/api/ThriftHiveMetastore.java | 671 +++++++++++++++++++- 
metastore/src/gen-php/hive_metastore_types.php  | 30 +- 
.../hadoop/hive/metastore/HiveMetaStore.java  | 155 ++++- 
.../hadoop/hive/metastore/HiveMetaStoreClient.java | 9 +- 
.../hadoop/hive/metastore/IMetaStoreClient.java | 14 + 
.../hadoop/hive/metastore/MetaStoreUtils.java  | 31 + 
(bunch more lines) 
ql/src/test/queries/clientpositive/index_compact.q | 13 + 
.../test/queries/clientpositive/index_projection.q | 13 + 
ql/src/test/queries/clientpositive/index_summary.q | 13 + 
.../queries/clientpositive/ql_rewrite_gbtoidx.q | 9 + 
.../results/clientpositive/index_compact.q.out  | 70 ++ 
.../clientpositive/ql_rewrite_gbtoidx.q.out  | 211 ++++++ 
.../primitive/PrimitiveObjectInspectorUtils.java | 29 +- 
57 files changed, 4000 insertions(+), 131 deletions(-) 

如果删除--stat,你会得到实际的差异。 mirror/trunkorigin/trunk之间的...是一个简短的说法,你需要在共同的祖先之间进行区别,所以它不会给你一个差异去除从开始以来添加到原始项目的所有内容,它只是给你所做的改变在你的分支上制作。

+0

良好的细节解释。 +1。在''...''语法中,请参阅http://stackoverflow.com/questions/2539040/not-able-to-think-of-a-case-where-git-diff-master-lab-and- git-diff-master-lab和http://stackoverflow.com/questions/53569/how-to-get-the-changes-on-a-branch-in-git/53573#53573,以及非常完整的答案: http://stackoverflow.com/questions/850607/difference-in-git-log-origin-master-vs-git-log-origin-master – VonC 2010-06-19 15:44:07

+0

我一直在得到以下错误。我如何解决它 ? [prafulla @ prafulla-laptop hive] $ git log --oneline origin/trunk^mirror/trunk 警告:refname'origin/trunk'含糊不清。 警告:refname'mirror/trunk'不明确。 – Prafulla 2010-06-20 03:56:55

+0

看起来你可能不小心创建了一个名为'origin/trunk'的本地跟踪分支,这是很常见的,不幸的是git甚至可以让你做到这一点。你可以通过运行'git log refs/remotes/origin/trunk^mirror/trunk'来解决这个问题 - 这将使它不含糊。我会告诉你删除你的本地('refs/heads/origin/trunk')引用,但是你可能已经在处理它了,我将不得不看到你所有的引用。你可以运行'git for-each-ref'并在这里粘贴输出,我可以告诉你是否可以安全地删除它。 – 2010-06-20 17:46:36

0

上述方法的一个缺点是它们不同于特定的分支对。如果您想查找全部提交,您的本地回购与远程不同 - 即使您有可能创建了所有分支,即使某些分支尚未合并回主版本 - 您可以执行以下操作:

git log --branches --not --remotes 
+0

这很有用。你如何反转它,以便它显示远程中与你的本地回购不同的所有未分支分支? – meowsqueak 2016-09-12 22:51:19

5

这里有一个缺陷,以防万一再次遇到这个问题。

[remote "origin"] 
    fetch = +refs/heads/*:refs/remotes/origin/* 
    url = [email protected]:prafullat/hive.git 
[remote "mirror"] 
    fetch = +refs/heads/*:refs/remotes/origin/* 
    url = git://github.com/apache/hive.git 

每当你做一个git上镜取它覆盖在你的.git /参/遥控器相同的远程分支。您应该确保更改远程镜像抓取以反映新名称。

[remote "origin"] 
    fetch = +refs/heads/*:refs/remotes/origin/* 
    url = giturl 
[remote "mirror"] 
    fetch = +refs/heads/*:refs/remotes/mirror/* 
    url = giturl 

随后的[我如何比较两个的git仓库?(一个简单的

git diff origin/master..mirror/master