240

2 つの git リポジトリの違いをどのように取得できますか?

シナリオ: repo_a と repo_b があります。後者は repo_a のコピーとして作成されました。その後、両方のリポジトリで並行して開発が行われました。これら 2 つのリポジトリの現在のバージョンの違いを一覧表示する方法はありますか?

4

12 に答える 12

301

repo_a で:

git remote add -f b path/to/repo_b.git
git remote update
git diff master remotes/b/master
git remote rm b
于 2009-12-28T08:25:39.090 に答える
54

Meldはディレクトリを比較できます。

meld directory1 directory2

2 つの git リポジトリのディレクトリを使用するだけで、見栄えの良い比較が得られます。

ここに画像の説明を入力

青い項目の 1 つをクリックすると、何が変更されたかがわかります。

于 2016-05-30T14:00:15.130 に答える
9
git diff master remotes/b

それは正しくありません。remotes/bリモートですが、ブランチではありません。

それを機能させるには、次のことを行う必要がありました。

git diff master remotes/b/master
于 2011-01-17T05:55:11.790 に答える
9

1 つのリポジトリに両方のブランチを作成したら、git diff. そして、それらを 1 つのリポジトリに入れるのは簡単です

git fetch /the/other/repo/.git refs/heads/*:refs/remotes/other/*
于 2009-12-28T08:21:26.587 に答える
7

http://git.or.cz/gitwiki/GitTipsの「一般」のセクション「2 つのローカル リポジトリを比較する方法」 を参照してください。

つまり、GIT_ALTERNATE_OBJECT_DIRECTORIES 環境変数を使用して他のリポジトリのオブジェクト データベースにアクセスし、 /GIT_DIR を指定してgit rev-parseを使用して、他のリポジトリのシンボリック名を SHA-1 識別子に変換します。--git-dir

最新バージョンは次のようになります (「repo_a」にいると仮定します):

GIT_ALTERNATE_OBJECT_DIRECTORIES=../repo_b/.git/objects \
   git diff $(git --git-dir=../repo_b/.git rev-parse --verify HEAD) HEAD

../repo_b/.gitrepo_b のオブジェクト データベースへのパスです (ベア リポジトリの場合は repo_b.git になります)。もちろん、HEADだけでなく、任意のバージョンを比較できます。


repo_a と repo_b が同じリポジトリである場合、" " を使用git remote add -f ...して繰り返し更新するためのリポジトリのニックネームを作成するか、" " をオフにするかのいずれかで、両方を同じリポジトリに配置する方が理にかなっていることに注意してくださいgit fetch ...。他の回答で説明されているように。

于 2009-12-28T12:59:27.990 に答える
7

フォルダーとファイルを比較する優れた機能を備えた PyCharm を使用しています。

両方のリポジトリの親フォルダーを開き、インデックスが作成されるまで待ちます。次に、フォルダまたはファイルを右クリックしてCompare to...、反対側の対応するフォルダ/ファイルを選択します。

どのファイルが異なるかだけでなく、その内容も表示されます。コマンドラインよりはるかに簡単です。

于 2016-10-20T23:00:08.867 に答える
1

最善の策は、ローカル マシンに両方のリポジトリを用意し、2 つのディレクトリをパラメーターとして linux diff コマンドを使用することです。

diff -r repo-A repo-B

于 2015-11-10T18:46:40.450 に答える