Leo*_*ves 7 git version-control merge dvcs github
考虑以下提交页面:
https://github.com/SignalR/SignalR/commit/cc5b002a5140e2d60184de42554a8737981c846c
通常,对于 Git,提交是在先前代码库之上应用的一组更改,因此,考虑以下树:
查看差异将在左侧1ca1b6b显示截至目前的代码库,并在右侧显示该提交中应用的更改。ca2cac9通过合并提交,我们在左侧看到了什么?即考虑以下树:
如果我们在 GitHub 上查看 commit 1e25f98,左边是什么?06f5be1?那么对于更复杂的树呢?或者三个分支之间的合并?它只是显示了历史上最后一个共同点之间的差异吗?
Git 提交实际上是快照
...因此,您需要指定两个提交来进行比较。例如git diff HEAD^ HEAD。如果未指定,第二个引用将设置为 HEAD。
但是,是的,例如,git log -p显示了有关第一个父级的补丁,以使事情变得更容易。GitHub/Lab 的行为也是一样的。
家长已下令
合并提交的第一个父级指向您在调用之前所处的提交git merge。(你的头在哪里。)
默认情况下,始终采用第一个父级。例如,是(在第二张图像上)HEAD^的第一个父级,是( )的第一个父级的第一个父级。这可以被 的第二个父项so覆盖,因此。HEAD6f01964HEAD~2HEAD2bb48b5^<number>HEAD^2HEADb0417C3
petrpulc 的答案实质上是正确的,我已经投了赞成票,但为了具体解决 GitHub 问题,GitHub 显示此差异的做法是完全忽略第二个父级。
您可以使用以下命令在命令行上查看相同的差异:
git log -p --no-walk --first-parent -m cc5b002a5140e2d60184de42554a8737981c846c
Run Code Online (Sandbox Code Playgroud)
或者,更简单:
git show --first-parent cc5b002a5140e2d60184de42554a8737981c846c
Run Code Online (Sandbox Code Playgroud)
(我们需要--no-walkingit log来防止 Git 查看更多提交,而 whilegit show暗示了这一点。我们需要--first-parent使 Git 只查看第一个父级,对于git log,我们需要-m或-c或--cc强制git log显示补丁,因为-p通常会跳过显示补丁对于合并,即使我们用来--first-parent修剪剩余的父项。)
| 归档时间: |
|
| 查看次数: |
1631 次 |
| 最近记录: |