【发布时间】:2018-02-20 09:49:38
【问题描述】:
我喜欢使用git blame 作为辅助形式的文档。检查提交的原因、提交时间和提交人非常有用。
但有时特定行的历史记录会丢失。可能发生这种情况的一些情况:
进行了更改,但随后又恢复了。
有人重新缩进文件并提交它。 稍后,标准缩进被恢复并提交。
有人将文件复制到没有历史记录的新分支/存储库中。 我的分支中还有原始历史记录,我想将其合并到新分支中。
在所有这些情况下,git blame 将显示文件的最新更改,这通常不是很有用。例如。 “恢复缩进”或“恢复提交 #123”或“初始提交:所有文件”。
有什么方法可以向git blame 暗示我们对旧历史比对新历史更感兴趣?
情况如下:
... - A - B - C
- 提交 A 对文件中的所有行都有很好的注释。
- 提交 B 重新缩进了整个文件。
- 提交 C(可能是还原)将文件恢复到提交 A 中的状态。
我想知道我们是否可以与优先父级执行神奇的 git 合并:
.-------.
/ \
... - A - B - C - D
- 提交 D 告诉 git A 是
git blame要遵循的优先级历史记录。
另一种我认为可以接受的可能性:
E - F
\
... - A - B - C - D
- 提交 E 是一个新的空分支。
- 提交 F 仅添加关注的文件。
- 提交 D 合并两个历史记录,使 F 成为历史记录的优先级。
我希望让这成为历史的永久一部分。在搜索历史记录时,我对将额外的选项传递给 git blame 并不感兴趣。
【问题讨论】:
-
切线观察:昨天 dev1 和 dev2 都将相同的 3 行修复粘贴到它们的分支中。 (因为它们并没有真正冲突,git 不介意两个分支上的行发生变化,并且可以自动合并它们。)我将 dev1 的分支合并到 master 昨天,他出现在 git blame。今天把dev2的分支合并到master中,现在dev2出现在git blame中。但是如果我返回并使用
git merge -s ours dev2进行合并,那么 dev1 会出现在 git blame 中,而不是 dev2。我想知道是否还有希望...... :)