找到两个git存储库之间的差异

Pra*_*lla 21 git

我已经在Github上分叉了一个项目的git存储库并对它进行了自己的更改.我想在我的存储库和我分叉的原始存储库之间找到差异.有人能告诉我git命令来获得这种差异吗?我需要提交差异进行审核.

原始存储库:

git://github.com/apache/hive.git
Run Code Online (Sandbox Code Playgroud)

我的存储库:

git@github.com:prafullat/hive.git
Run Code Online (Sandbox Code Playgroud)

以下是我的详细信息 .git/config

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = git@github.com:prafullat/hive.git
[remote "mirror"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = git://github.com/apache/hive.git
Run Code Online (Sandbox Code Playgroud)

我尝试查看有关同一主题的其他已发布的问题,但无法使其发挥作用.

任何帮助将受到高度赞赏.

小智 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 git@github.com: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
Run Code Online (Sandbox Code Playgroud)

或者您可以删除--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(-)
Run Code Online (Sandbox Code Playgroud)

如果你删除了--stat,你会得到实际的差异.该...之间的mirror/trunkorigin/trunk是一个速记说你想要的共同祖先之间的差异,因此它不会给你一个差异消除一切加到原来的项目,因为你开始,它只是给你你上所做的更改您的科.


小智 5

这有一个缺陷,如果有人再次遇到这个问题.

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = git@github.com:prafullat/hive.git
[remote "mirror"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = git://github.com/apache/hive.git
Run Code Online (Sandbox Code Playgroud)

每当你在镜像上执行git fetch时,它会覆盖.git/refs/remotes中的同一个远程分支.您应确保更改远程镜像提取以反映新名称.

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = giturl
[remote "mirror"]
    fetch = +refs/heads/*:refs/remotes/mirror/*
    url = giturl
Run Code Online (Sandbox Code Playgroud)

那么简单

git diff origin/master..mirror/master
Run Code Online (Sandbox Code Playgroud)


Pra*_*lla 3

手动提交 sha1 并在 diff 中使用它们解决了问题!

[prafulla@prafulla-laptop .git] $cd refs/remotes/
[prafulla@prafulla-笔记本电脑遥控器] $cat origin/trunk
1c4fa827f4fad2aad67a4fa5b57d88afe51d1559
[prafulla@prafulla-笔记本电脑遥控器] $cat 镜子/后备箱
14f5fb7cba7bef466727a5b721c7c202e80e5dfd
[prafulla@prafulla-笔记本电脑遥控器] $git diff 14f5fb7cba7bef466727a5b721c7c202e80e5dfd 1c4fa827f4fad2aad67a4fa5b57d88afe51d1559
…………
.... diff 如下!......