You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何查看Git中‘deleted by us/them’树冲突的文件变更?

如何查看Git合并/变基中被删除文件的变更内容?

这种场景确实挺闹心的——当你在分支里删了某个文件,合并另一个修改过该文件的分支时,Git只会告诉你冲突是"deleted by us/them",却不会直接展示对方改了啥,完全没法判断要不要把那些变更整合到重构后的代码里。别担心,有几个简单的命令能帮你搞定:

  • 直接查看对方分支的完整文件内容
    如果你想看看对方分支里这个文件最后是什么样子,用git show命令就行,格式是:

    git show <对方分支名>:<文件路径>
    

    比如你的场景里,要查看develop分支的foo.x,就跑:

    git show develop:foo.x
    

    这个命令会直接输出文件的完整内容,你可以和自己重构后的代码对比,看看有没有需要复用的逻辑。

  • 查看对方对文件的具体变更(仅差异)
    要是不想看整个文件,只想知道对方相对于你们共同的代码祖先做了哪些修改,先找到两个分支的共同提交哈希:

    git merge-base develop feature
    

    然后用git diff对比这个祖先和对方分支的文件差异:

    git diff <共同祖先哈希> develop -- foo.x
    

    这样就能精准看到用户A在develop上对foo.x做的每一处修改,针对性更强。

  • 临时恢复文件到工作区做本地对比
    如果你习惯用本地的diff工具(比如VS Code的对比功能),可以先把对方分支的文件拉到工作区:

    git checkout develop -- foo.x
    

    之后你就能用任何工具对比这个临时文件和你重构后的代码了。记得看完后要删掉这个临时文件,避免后续提交出错:

    rm foo.x
    

这些方法都不用破坏当前的冲突状态,你可以放心查看内容,再决定是保留对方的变更(整合到新文件)还是继续删除原文件。

内容的提问来源于stack exchange,提问作者IMSoP

火山引擎 最新活动