如何获取两个独立Git仓库不同分支的文件差异列表
对比Git仓库A的support/v1分支与仓库B的master分支文件差异(找出B缺失的文件)
方法一:通过远程仓库关联对比
适合已本地拥有其中一个仓库的场景:
- 进入仓库B的本地目录:
cd /path/to/your/repo-B - 将仓库A添加为B的远程仓库(命名为
upstream方便区分):# 本地仓库路径的情况 git remote add upstream /path/to/your/repo-A # 远程仓库URL的情况 git remote add upstream https://example.com/your/repo-A.git - 拉取仓库A的最新代码到本地:
git fetch upstream - 对比两个分支的文件状态:
- 查看所有文件的差异状态(新增、删除、修改):
git diff upstream/support/v1 master --name-status - 只筛选出B的master分支中缺失的文件(即A的support/v1存在但B没有的):
这里的git diff upstream/support/v1 master --name-status | grep "^D"D状态表示对比的右侧分支(master)中该文件已删除,也就是B中无此文件。
- 查看所有文件的差异状态(新增、删除、修改):
方法二:本地克隆两个仓库后直接对比
适合两个仓库都未克隆到本地的场景:
- 克隆两个仓库到本地:
git clone <repo-A-url> repo-A git clone <repo-B-url> repo-B - 切换到对应分支:
# 进入仓库A并切换到support/v1 cd repo-A && git checkout support/v1 # 进入仓库B并切换到master cd ../repo-B && git checkout master - 直接对比两个仓库的目录内容:
- 查看所有文件差异状态:
git diff --no-index ../repo-A ../repo-B --name-status - 只筛选B中缺失的文件:
git diff --no-index ../repo-A ../repo-B --name-status | grep "^D"--no-index参数允许Git对比非仓库目录或不同仓库的目录内容。
- 查看所有文件差异状态:
额外说明
- 若需查看具体文件的内容差异,去掉
--name-status参数即可直接看到文件内容变更。 - 方法一中如果后续不需要关联仓库A,可执行
git remote remove upstream移除远程关联。
内容的提问来源于stack exchange,提问作者Mitul Panchal
相关产品推荐
相关产品推荐

