V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
lyvv
V2EX  ›  git

关于刚刚 git 的问题描述的不清楚,不能编辑主题了,重新发下问题: git 如何对比服务器上最新的代码和本地的区别? git diff 对比和我预想不一样

  •  
  •   lyvv · 1 天前 · 1173 次点击
    关于刚刚 git 的问题描述的不清楚,不能编辑主题了,重新发下问题:git 如何对比服务器上最新的代码和本地的区别? git diff 对比和我预想不一样

    *提交的记录可以看这张大图,请大家看了这个大图再评论啊,感谢大家呀



    *working 代码已提交如图,位于图片 2 位置 ,图片 1 位置是最新代码

    点击 图片 1 位置 ,会对比 1 位置 和 5 位置 的差异
    点击 图片 2 位置 ,会对比 2 位置 和 3 位置 的差异

    *但是我想要对比 图片 1 位置 和 图片 2 位置 的差异,在 vscode 中无法直接查看对比。

    *在前一个帖子里面,下面这个方式不行,提示无差异。不知道对比的是哪 2 个 commit...
    git fetch origin
    git diff origin/dev dev

    *使用 Git Graph 插件也是一样的问题。


    *只有下面这个办法可行,和我手动 git clone 一个新目录,结果一致。
    git diff 图片 1 位置 commit1 图片 2 位置 commit2

    *但是这个办法,操作太麻烦,需要手动复制 commit id ,而且只能在 cmd 里面查看
    能否在可视化界面里面查看?
    19 条回复    2025-05-14 10:32:55 +08:00
    sibusana
        1
    sibusana  
       1 天前
    git history 插件可以的
    hwdq0012
        2
    hwdq0012  
       1 天前
    有 ssh 吗,我用 vim+ git 帮你看
    Trim21
        3
    Trim21  
       1 天前 via Android
    你图里根本就没有 dev 这个 branch 啊
    lyvv
        4
    lyvv  
    OP
       1 天前
    @hwdq0012 加个 qq ,用 todesk 或者向日葵?
    837666626

    特别感谢啊!!
    lyvv
        5
    lyvv  
    OP
       1 天前
    @Trim21 不理解你说的.....我全部在一个分支里面工作
    hwdq0012
        6
    hwdq0012  
       1 天前
    @lyvv 加了,没动静
    lyvv
        7
    lyvv  
    OP
       1 天前
    @hwdq0012 谢谢大佬,用 GitLens 可以对比某个具体的提交和当前的对比。
    但是在使用上,界面操作太多。

    大佬建议,还是使用命令行。

    现阶段,如果要图形化的查看,我觉得直接使用 git clone 到新目录,再使用 beyond compare 对比最快。

    再次感谢大佬。 @hwdq0012
    networm
        8
    networm  
       1 天前
    Fork 可以按 Ctrl 选中两个提交直接比较 1 和 2
    hwdq0012
        9
    hwdq0012  
       1 天前
    @lyvv #7 有的 repo clone 也很耗时的,熟悉就好

    还有我看楼里把 commit 和分支区分了, 其实每一个 commit 都是一个分支, dev,master,head 这些只是一些会自动更新的游标,和 commit 没有本质区别
    k9990009
        10
    k9990009  
       1 天前 via Android
    用 IDEA 呗,我经常在几个客户分支的代码合来合去,有一些的定制开发合并在一起
    Cu635
        11
    Cu635  
       1 天前
    不同分支下的 commit 的 id 也是唯一的,可以用 2 个 commit id 来 diff 。具体怎么用见下面的链接:

    https://www.worldhello.net/gotgit/02-git-solo/080-git-history-travel.html#git-diff
    msg7086
        12
    msg7086  
       1 天前
    你这问题确实描述得不清楚,你想问的是 merge commit 节点和他上一个并入节点之间的 diff 。
    git 的 merge commit 节点很多地方行为是不太一样的,因为毕竟有两个父节点。
    fpk5
        13
    fpk5  
       1 天前
    Git 的 merge 是一个三路合并,一个 merge commit 是有两个 parent 的。你只点击 merge commit ,谁知道你是想看与哪一个 parent 的 diff ?所以默认显示的是与 merge base (提交 5 )的 diff ,这个是没有歧义的。你想比较 1 和 2 就用`git diff SHA2 SHA1`。
    julyclyde
        14
    julyclyde  
       1 天前
    需要 fetch 回来然后再在本地 diff 吧?
    jardel
        15
    jardel  
       1 天前
    vscode 可以使用 GitLens 插件 在 gitlens inspect 中打开 search&compare 就有对比多个 分支 tag ref 的选项
    JackCh3ng
        16
    JackCh3ng  
       1 天前
    git fetch
    git diff FETCH_HEAD HEAD
    lyvv
        17
    lyvv  
    OP
       1 天前
    @msg7086 其实我只想对比:服务器最新代码和我本地的区别(无论是否提交情况)

    1 楼附图上,是位置 1 和位置 2 ,目前的结论是只能用 git diff commit1 commit2 ,这个操作非常麻烦...

    貌似没有方便的对比方式
    JackCh3ng
        18
    JackCh3ng  
       1 天前
    @JackCh3ng #16 命令行图形化对比可以看下这个 git 插件 https://github.com/dandavison/delta
    JackCh3ng
        19
    JackCh3ng  
       1 天前
    如果这个命令很常用可以配置别名
    git config alias.diffo '!f() { git fetch; git diff FETCH_HEAD HEAD;}; f'
    只要执行 git diffo 就自动拉取远程并执行比较
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3645 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 05:07 · PVG 13:07 · LAX 22:07 · JFK 01:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.