我们如何得到两个git存储库之间的区别?
场景: 我们有一个repo_a和repo_b。后者是作为repo_a的副本创建的。之后,两个存储库都进行了并行开发。是否有一种方法可以列出这两个存储库的当前版本的差异?
我们如何得到两个git存储库之间的区别?
场景: 我们有一个repo_a和repo_b。后者是作为repo_a的副本创建的。之后,两个存储库都进行了并行开发。是否有一种方法可以列出这两个存储库的当前版本的差异?
当前回答
一个简单的方法来做到这一点,而不触动你的遥控器配置。 从repo A,在master(假设你想比较主分支):
git fetch path/to/repo_b.git master
git diff FETCH_HEAD
其他回答
git diff master remotes/b
这是不正确的。Remotes /b是一个遥控器,但不是一个分支。
为了让它工作,我必须做:
git diff master remotes/b/master
一旦你在一个存储库中有了两个分支,你就可以做git diff了
git fetch /the/other/repo/.git refs/heads/*:refs/remotes/other/*
参见http://git.or.cz/gitwiki/GitTips,“常规”中的“如何比较两个本地存储库”部分。
简而言之,你使用GIT_ALTERNATE_OBJECT_DIRECTORIES环境变量来访问其他存储库的对象数据库,并使用git rev-parse和——git-dir / GIT_DIR将其他存储库中的符号名称转换为SHA-1标识符。
现代版本看起来像这样(假设你在'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 /。Git是repo_b中对象数据库的路径(它将是repo_b。Git(如果它是裸库)。当然,你可以比较任意的版本,而不仅仅是正面。
注意,如果repo_a和repo_b是同一个存储库,将它们放在同一个存储库中可能更有意义,或者使用"git remote add -f…"为存储库创建昵称以重复更新,或者obe off "git fetch…";如其他回答中所述。
您可以先添加其他回购作为当前回购的远程:
git remote add other_name PATH_TO_OTHER_REPO
然后从遥控器中获取分支:
git fetch other_name branch_name:branch_name
这将创建该分支作为当前回购中的新分支,然后你可以将该分支与你的任何分支区分,例如,将当前分支与新分支(branch_name)进行比较:
git diff branch_name
我使用PyCharm,它具有比较文件夹和文件的强大功能。
只需打开两个repo的父文件夹,并等待它索引。然后你可以用右键点击一个文件夹或文件,然后比较…然后在另一边选择相应的文件夹/文件。
它不仅显示了哪些文件不同,而且还显示了它们的内容。 比命令行简单多了。