当前分支和主服务器之间的Git差异,但不包括未合并的主提交

 时尚淘宝交__流站 发布于 2023-02-07 18:57

我想要一个尚未合并到master的分支中的所有更改的差异.

我试过了:

git diff master
git diff branch..master
git diff branch...master

但是,在每种情况下,diff都包含master中尚未合并到我的分支中的内容.

有没有办法在我的分支和主人之间做一个差异,排除了尚未合并到我的分支的主人的变化呢?

3 个回答
  • git diff `git merge-base master branch`..branch
    

    合并基数是branch分歧的地方master.

    Git diff支持以下特殊语法:

    git diff master...branch
    

    你不能交换双方,因为那样你就会得到另一个分支.你想知道branch它发生了哪些变化master,而不是相反.

    松散相关:

    用Git找到分支点?

    我怎样才能看到另一个分支从哪个分支分叉?


    请注意,.....语法不具有相同的语义在其他的Git工具.它与指定的含义不同man gitrevisions.

    引用man git-diff:

    git diff [--options] <commit> <commit> [--] [<path>…]

    这是为了查看两个任意之间的变化<commit>.

    git diff [--options] <commit>..<commit> [--] [<path>…]

    这与之前的表格同义.如果<commit>省略一侧,则其效果与使用相同HEAD.

    git diff [--options] <commit>...<commit> [--] [<path>…]

    此表单用于查看包含和最多为第二个的分支上的更改<commit>,从两者的共同祖先开始<commit>." git diff A...B"相当于" git diff $(git-merge-base A B) B".您可以省略任何一个<commit>,其效果与使用相同HEAD.

    如果你正在做一些奇特的事情,应该注意的是<commit>,除了最后两个使用".."符号的表格之外,上面描述中的所有内容都可以是任意的<tree>.

    有关拼写方法的更完整列表<commit>,请参阅中的"指定修订"部分gitrevisions[7].但是,"diff"是关于比较两个端点,而不是范围,而范围符号(" <commit>..<commit>"和" <commit>...<commit>")并不表示在"指定范围"部分中定义的范围gitrevisions[7].

    2023-02-07 19:00 回答
  • 正如John Szakmeister和VasiliNovikov所指出的那样,从师父的角度来看,获得最完全差异的最短命令是:

    git diff master...
    

    这将使用您的母版本地副本。

    要比较特定文件,请使用:

    git diff master... filepath
    

    输出示例:

    2023-02-07 19:00 回答
  • 这对我有用:

    git diff origin/master...
    

    这仅显示当前选定的本地分支与远程主分支之间的更改,并忽略来自合并提交的本地分支中的所有更改.

    2023-02-07 19:01 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有