当前位置: 首页 > 面试题库 >

针对工作树的Git diff分支不包括合并

贡斌
2023-03-14
问题内容

我试图找到当前工作树和不包括合并提交的另一个分支(例如master)之间的差异。

. --a--> . --b--> . (master)
 \       \
  c       \ (merge)
   \       \
    . ----- . --d--> . (current) --e--> (working tree)

现在,git diff master确实显示了工作树的更改,但是也显示了主树的更改而不是当前(-b,c,d,e)。我想看到这些变化不在master中,也就是说,我想看到c,d和e。

我尝试使用三点符号或git log,但是这些与技巧(最后一次提交)进行了比较:

git diff master...
git diff master...current_branch

git log -p --no-merges current..master

返回c和d,即它们不包括e:工作树。

如何获得该差异以包括工作树?


问题答案:

这里要记住的关键点是,如果两个分支都共享提交X,那么这不会对diff增加任何内容,也就是说,您在diff *中看不到有关提交X的任何信息。

因此,您只需要与分支点(可以通过merge-base找到)进行比较,并与之进行比较:

git diff $(git merge-base current master)

返回c,d和e。

如果故事是针对那些看似更复杂(有几次合并)的故事的,那么这也适用:

. --a--> . --b--> . --- . (master)
 \       \             /
  c       \ (merge)   / (merge)
   \       \         /
    . ----- . ----- . --d--> . (current) --e--> (working tree)

返回d和e。

*这就是为什么你没有看到a在git diff master。



 类似资料:
  • 我用的是Stackblitz:https://stackblitz.com/edit/bible-talk 我用的是角度10。 我正在尝试从JSON文件导入数据。 我在Stackblitz上找到了一个如何做到这一点的例子: https://stackblitz.com/edit/json-import-example?file=src/app/app.component.html 您应该将这些添加

  • 这里的结果是错误的,我不确定为什么。请帮忙

  • 分支的工作流程要取决于它的使用背景,我们可以将它分为两个主要的方面。 注释 请记住,在这里它只是一个语义层面上的划分。在技术和实用层面上,一个分支就是一个分支,它们的原理都是一样的。 (A) 短期分支(Short-Lived)/主题分支(Topic Branches) 在本书前面的章节中已经提到了我对建立分支的一些建议,例如:对应新功能的分支,修复错误的分支 以及 进行代码尝试所建立的分支。这些分

  • 到目前为止,我们还没有在我们项目上使用过分支。然而你并不知道,我们实际已经工作在了一个分支上了。这是因为在 Git 上的分支功能并不是可选的,你永远会工作在一个分支中的(当前的 “active”,或者 “checked out”,或者 “HEAD”分支)。 那么 Git 是如何知道你当前在哪个分支上工作的呢? “git status” 命令输出的第一行会向我们显示出 “在主分支(branch ma

  • GitDiff 显示 git 仓库和 XCode 源代码编辑器保存的代码文件的不同之处,复制仓库的内容到你的机器上,构建和重启 XCode。修改过的地方会用橙色标记,蓝色代表新加入的代码。删除的代码使用红色标记。  

  • 因此,有一个的实例,其中为空,这正是Jackson返回的内容: 我希望json没有空括号: 这个问题对我没有帮助: null