获取两个存储库之间的区别
我们怎样才能得到两个git仓库之间的区别?
场景:我们有一个repo_a和repo_b。 后者是作为repo_a的副本创build的。 之后的两个版本库都有了并行的发展。 有没有一种方法可以列出这两个版本库的当前版本的差异?
在repo_a中:
git remote add -fb path/to/repo_b.git git remote update git diff master remotes/b/master git remote rm b
一旦你在一个仓库中有两个分支,你可以做一个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
您可以首先添加其他回购作为您当前回购的远程:
git remote add other_name PATH_TO_OTHER_REPO
然后从远程获取brach:
git fetch other_name branch_name:branch_name
这将创build该分支作为当前repo中的新分支,然后可以将该分支与任何分支进行比较,例如,将当前分支与新分支(branch_name)进行比较:
git diff branch_name
请参阅http://git.or.cz/gitwiki/GitTips ,“常规”中的“如何比较两个本地存储库”一节。
简而言之,您正在使用GIT_ALTERNATE_OBJECT_DIRECTORIES环境variables访问其他存储库的对象数据库,并使用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/.git
中对象数据库的path(如果它是裸仓库,它将是repo_b.git)。 当然,你可以比较任意版本,而不仅仅是HEAD。
请注意,如果repo_a和repo_b是同一个存储库,则可以使用“ git remote add -f ...
”为存储库重复更新创build昵称,或者放弃“ git fetch ...
”; 如其他答复中所述。
Meld可以比较目录:
meld directory1 directory2
只需使用这两个git仓库的目录,你会得到一个很好的graphics比较:
当你点击其中一个蓝色的项目时,你可以看到改变了什么。
你最好的select是在你的本地机器上同时使用repos,并使用linux diff命令和两个目录作为参数:
diff -r repo-A repo-B
我使用PyCharm,它具有很好的function来比较文件夹和文件。
只要打开这两个回购的父文件夹,并等待,直到它索引。 然后,您可以右键单击文件夹或文件,并Compare to...
并select相应的文件夹/文件在另一边。
它不仅显示了哪些文件不同,而且还显示了它们的内容。 比命令行要容易得多。