Нахождение различий между двумя git-репозиториями - PullRequest
21 голосов
/ 19 июня 2010

Я разбудил git-репозиторий проекта на Github и внес в него свои изменения.Я хотел получить разницу между моим хранилищем и исходным хранилищем, которое я разветвил.Может кто-нибудь сказать мне команду git, чтобы получить этот diff?Мне нужно представить diff для обзора.

Исходный репозиторий:

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

Мой репозиторий:

git@github.com:prafullat/hive.git

Вот подробности из моего .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

Я попытался просмотреть другие опубликованные вопросы по той же теме и не смог заставить его работать.

Любая помощь будет высоко оценена.

Ответы [ 5 ]

15 голосов
/ 19 июня 2010

Вам нужно получить последние версии обоих удаленных репозиториев и сравнить основные ветви друг с другом. Похоже, что основная ветвь - это ветка 'trunk', поэтому вы можете видеть, какие коммиты являются уникальными для вашего проекта (а не в ветке trunk 'проекта' mirror '), например:

$ 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

Или вы можете удалить --oneline, чтобы увидеть сообщения полной фиксации. Похоже, они все твои. Вы также можете добавить --no-merges, если не хотите видеть эти коммиты слияния.

Далее вы можете получить фактический diff, запустив это:

$ 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/trunk и origin/trunk - это сокращение, говорящее о том, что вам нужен diff между общим предком, поэтому оно не дает вам diff, удаляющего все, что добавлено в исходный проект с момента вашего запуска, просто изменения, которые вы внесли в свою ветку.

5 голосов
/ 26 сентября 2013

В этом есть недостаток, если кто-то снова сталкивается с этим вопросом.

[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

Всякий раз, когда вы делаете 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

Тогда просто

git diff origin/master..mirror/master
3 голосов
/ 19 июня 2010

Получение commit sha1 вручную и использование их в diff решило проблему!

[prafulla@prafulla-laptop .git] $cd refs/remotes/
[prafulla@prafulla-laptop remotes] $cat origin/trunk
1c4fa827f4fad2aad67a4fa5b57d88afe51d1559
[prafulla@prafulla-laptop remotes] $cat mirror/trunk 
14f5fb7cba7bef466727a5b721c7c202e80e5dfd
[prafulla@prafulla-laptop remotes] $git diff 14f5fb7cba7bef466727a5b721c7c202e80e5dfd 1c4fa827f4fad2aad67a4fa5b57d88afe51d1559
.......
.... diff follows!.......

2 голосов
/ 19 июня 2010
git diff origin/master mirror/master

Что-то, что должно сработать.

0 голосов
/ 29 января 2012

Один недостаток вышеприведенных подходов заключается в том, что они отличаются определенной парой ветвей .Если вы хотите найти все коммиты, в которых ваш локальный репо отличается от удаленного - во всех ветках, которые вы, возможно, создали, даже если некоторые из них еще не объединены с мастером - вы можете сделать следующее:

git log --branches --not --remotes
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...