跳至内容
GitTree
历史和恢复

比较重写前后的提交

What Changed… 比较两个提交系列中的补丁,重写之前的分支和重写之后的分支。合并提交被省略。对标记为 Same、Changed、Dropped 或 Added。比较不会移动参考或更改文件。配对并不能证明两次提交意味着相同的事情。

免费已更新

适用于 GitTree 免费:所有本地 Git 功能,无需帐户。

在此页面上
  1. 开始之前
  2. 在哪里可以找到它
  3. 步骤
  4. 预期结果
  5. Git 命令
  6. 每对状态的含义
  7. 当比较无法运行时
  8. 如果出现问题
  9. 问题
  10. 有关的

开始之前

  • 更改内容是免费计划的一部分。您的 PATH 上的 Git 必须提供 git range-diff。如果不存在,则 GitTree 表示此 Git 无法比较重写的系列。
  • 你仍然有这两个技巧。变基后,旧的提示通常会出现在引用日志中。 Lost & Found 可以找到没有分支指向的提交。

在哪里可以找到它

  • 提交的 Compare 菜单:What Changed…。
  • 强制推送后的通知。
  • Alt+D,或命令面板。
行动macOSWindows 和 Linux
What Changed…⌥DAlt+D
命令面板⌘⇧PCtrl+Shift+P

步骤

  1. 打开发生了什么变化

    选择您重写的提交,打开 Compare,然后选择 What Changed…,或按 Alt+D。对话框标题是 What Changed…。该注释称它比较了两个提交系列中的补丁,并且省略了合并提交。

    已选择提交的lumen存储库的提交图
    更改内容从此图表上的提交的“比较”菜单中打开。静态图片是图表,而不是比较对话框。GitTree 与演示存储库的接口。
  2. 选择两个提示

    将 Before rewrite 设置为旧提示,将 After rewrite 设置为新提示。 Choose both tips 如果任一侧为空。在 Advanced: excluded bases 下,Old base 和 New base 限制范围。将底座留空以使用尖端的共同祖先。

  3. 比较

    按 Compare。 Stop 要求读取完成当前步骤。结果是Rewrite comparison。每对是 Same、Changed、Dropped 或 Added。 Inspect patch difference 打开一对。 No patches differ in these ranges 表示系列赛。

  4. 发布前审核

    该注释说在发布之前检查更改的补丁。 Changed 对是具有不同差异的相同补丁槽。 Dropped仅出现在旧系列中。 Added仅出现在新系列中。该对话框不会推送任何内容。准备好后,请使用正常推送,或者如果远程仓库仍具有旧提示,请使用强制推送并租用。

预期结果

您可以命名哪些补丁在重写后幸存下来,哪些补丁被编辑了,哪些出现了或消失了。分支、索引和工作树保持原样。在要求其他人使用新历史记录之前,请先检查更改后的配对的补丁。

Git 命令

GitTree 在两个范围上运行 git range-diff。您可以在终端中运行相同的比较。 oldtip...newtip 使用合并基础。通过四次修订为自己奠定了基础,这就是高级领域所做的事情。

git range-diff oldtip...newtip
git range-diff oldbase..oldtip newbase..newtip
git reflog show feature

git reflog show feature 列出了分支在变基之前的提示,因此您可以将旧提示粘贴到 Before rewrite 中。 Range-diff 比较补丁。它并不决定两个提交消息描述相同的工作。 Rebase 和 interactive rebase 是重写的发生方式。有关 rebase 的教程 课程展示了命令行形式。

每对状态的含义

Rewrite 中的配对状态比较
状态含义
一样该补丁在两个系列中均匹配
改变了配对匹配,但补丁不同
掉落该补丁仅适用于旧系列
已添加该补丁仅在新系列中出现

合并提交被省略,因此您期望看到的合并不是删除的对。 Partial comparison: output reached its limit 表示范围太宽。缩小基地范围。 Git output format was not recognized 表示 Git 打印的文本无法解析。在信任该列表之前检查该文本。

当比较无法运行时

如果 Git 没有 range-diff,则 GitTree 表示 This Git cannot compare rewritten series. Update Git, or use Compare in the command palette to inspect the two revisions. 普通的比较是两棵树的差异,而不是补丁系列。从设置屏幕或 Git setup 更新 Git,然后再次打开“更改内容”。

如果出现问题

“这个 Git 无法与重写的系列相比。”

安装的 Git 没有范围差异。更新 Git,然后重试。在此之前,请从命令选项板比较两个修订版。该视图是树差异,而不是一系列补丁。

“选择两个提示。”

重写前或重写后为空。从转发日志或失物招领中选择旧提示,然后从分支中选择新提示。

“部分对比:产量已达极限,缩小范围。”

设置旧基准和新基准,使每一侧都只是重写的拉伸,然后再次按“比较”。

“在这些范围内没有补丁不同。”

系列匹配,或者基础排除您关心的提交。清除一个基地以使用共同祖先,并检查您是否没有两次选择相同的尖端。

问题

What Changed 会改变我的分支吗?

不。它读取两个提交系列并显示对状态。参考文献和文​​件保留在原处。

Changed 对是否具有相同的提交 ID?

不会。变基会写入新的提交 ID。更改意味着补丁已配对并且它们的差异不相同。这并不是说这两条消息描述了相同的意图。

为什么合并提交丢失?

该对话框显示合并提交被忽略。 Range-diff 比较重写两侧的补丁,而不是合并节点。

变基后旧提示在哪里?

它通常位于重新记录中,直到条目过期。如果没有分支指向,Lost & Found 可以搜索该引用日志和 GitTree 的恢复引用。

这会取代 git diff 吗?

不。 git diff 比较两棵树。 git range-diff 比较两个系列的补丁。使用重写后更改的内容。当您想要树差异时,请使用普通比较。