在VSO git存储库中,在文件历史记录中,有“简单历史记录(默认)','第一个父级','完整历史记录'和'完整历史记录(简化合并)。这些选项之间的区别是什么?什么是'简单历史'并且'完全的hisotry'。
我们在简单的历史记录中显示以下提交。 甲 - B - C - d - 电子 - ˚F 但是,在我们的一个开发人员运行命令" get reset --hard origin / develop"之后,在简单历史记录中,只提交A - B - C - D. E和F缺失。在'完整的历史'我们仍然可以看到提交A - B - C - D - E - F.真正的问题,当运行' git pull'为了获取最新代码,我们只得到代码更改以提交D,并且我们无法在E和F中提取代码更改。
我们该怎么办?所以,我们在简单的历史记录中得到E,F,当运行' git pull'时,E和F中的代码更改可以被拉到本地磁盘。
答案 0 :(得分:2)
Git历史简化可能是一个令人困惑的野兽。 99%的时间你甚至不知道它存在,但每隔一段时间它就会跳出Git的黑暗角落并咬你。在本文中,我们将探讨历史简化是什么以及在查看文件历史记录时如何引起混淆。
让我们从一个常见的场景开始:
您将更改推送到文件,然后将更改合并到主文件中。 你的一些同事也将他们的分支合并为主人。 你回来一段时间后再注意到你的更改丢失了。 寻找罪魁祸首,你去查看文件历史记录并注意...你的更改甚至没有列出!? 这里发生的是Git提交历史是一棵树,有时按时间顺序的历史记录与实际的文件树历史记录不同。在合并提交将文件恢复到其原始状态的情况下尤其如此。在这种情况下,默认历史记录视图实际上不会显示所有更改,因为从技术上讲,文件没有更改。
在上面的场景中,Git意识到它可以简化历史记录,并且从日志中删除您最有可能寻找的“更改”。
除非你之前遇到过这种情况,否则结果往往很多头发拉动并且想知道我的改变到底在哪里了?
来源和更多详情:https://www.visualstudio.com/en-us/articles/git-log-history-simplification