我有一个仓库,其中还挂载了另一个仓库。
git subtree add -P some/path otherremote otherbranch
开发进行了一些本地更改,但也进行了几轮合并:
git fetch otherremote
git subtree merge -P some/path otherremote/otherbranch
git commit
现在我想获取另一个远程/另一个分支的HEAD与某个路径下树之间的差异。我该如何做到这一点?
我有一个仓库,其中还挂载了另一个仓库。
git subtree add -P some/path otherremote otherbranch
开发进行了一些本地更改,但也进行了几轮合并:
git fetch otherremote
git subtree merge -P some/path otherremote/otherbranch
git commit
现在我想获取另一个远程/另一个分支的HEAD与某个路径下树之间的差异。我该如何做到这一点?
这应该是您要找的内容:
git diff otherremote/otherbranch commit:some/path
你甚至可以使用所有标准的 commit
命名约定来与之前的版本进行比较。
例如,我在远程 repo 中创建了一个u-boot,master分支,在我的主 repo 中作为一个子树存在于 u-boot/
。要查看自特定版本以来本地 master 分支所做的更改:
git diff u-boot/master~17 master:u-boot/
经测试可用于 git 1.9.0,尽管我相信这通常也适用于旧版本。
git remote update
或者git subtree pull
(后者也是合并),否则差异仍将显示来自过时分支的结果。即使我们从完全相同的子树推送到远程,情况也是如此。 - Wtower~17
的意思是“回退 17 个版本”。因此,这将使用 master 分支之前的第 17 个提交。 - Flamefiregit diff subtree-remote/commitish commitish: subtree_path_prefix/
”,其中subtree_path_prefix
是包含子树仓库根目录的目录。因此,如果您有一个名为barproj
的项目,在称为foosub
的目录中与其根不同的子树,并且有一个名为foorepo
的远程仓库用于该子树,则要将远程主分支的 HEAD 与本地仓库进行比较,您需要在barproj
目录中运行git diff foorepo/main main:foosub
。 - chb