Answers:
在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
origin/master
而不是裸露master
。此外,这会发现主分支之间的差异,那么如果要查找所有不同的分支怎么办?例如,检查存储库备份的状态?
将两个分支都放在一个存储库中后,即可进行操作git diff
。将它们存储在一个存储库中就像
git fetch /the/other/repo/.git refs/heads/*:refs/remotes/other/*
git diff master remotes/b
那是不对的。remotes/b
是远程的,但不是分支。
为了使其正常工作,我必须这样做:
git diff master remotes/b/master
请参见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)头
在哪里../repo_b/.git
是repo_b中对象数据库的路径(如果它是裸存储库,则为repo_b.git)。当然,您可以比较任意版本,而不仅仅是HEAD。
请注意,如果repo_a和repo_b是相同的存储库,则将它们都放置在同一存储库中可能更有意义,可以使用“ git remote add -f ...
”为存储库创建昵称以进行重复更新,也可以不使用git fetch ...
;如其他回应中所述。
最好的选择是将两个存储库都放在本地计算机上,并使用带有两个目录作为参数的linux diff命令:
diff -r repo-A repo-B