2017-03-02 190 views
0

在VSO git仓库中,在文件历史记录中,有“简单历史记录(默认)”,“第一个父项”,“完整历史记录”和“完整历史记录”(简化合并)的过滤器选项。这些选项有什么区别? “简单的历史”和“全面的理解”有什么区别。VSO git文件历史中的“简单历史记录(默认)”和“完整历史记录”有什么区别?

我们有像下面提交显示在简单的历史记录。但是,在我们的开发人员运行命令“get reset --hard origin/develop”之后,在简单历史记录中,只有提交A - B - 光盘。 E和F缺失。在“完整的历史记录”中,我们仍然可以看到提交A - B - C - D - E - F。真正的问题,运行“混帐拉”拉最新代码时,我们只得到了更改代码犯下d,我们不能拉E和F

我们应该做的代码修改?因此,我们将E,F取回到简单的历史记录中,并且在运行'git pull'时,E和F中的代码更改可以被拉到本地磁盘。

+0

什么是你的分支结构('git的日志--oneline --decorate --graph --all'的输出)?你是用“A-B-C-D-E-F”查看文件历史的分支是什么?它似乎不是开发分支。 –

回答

1

Git历史简化可能是一个令人困惑的野兽。 99%的时间你甚至不知道它存在,但每隔一段时间它会跳出Git的黑暗角落并咬你。在本文中,我们将探讨历史简化以及在查看文件历史记录时如何引起混淆。

让我们先从一个常见的场景:

你推更改一个文件,然后合并换入的主人。 你的一些同事也将他们的分支合并为主。 您稍后再回来并注意您的更改已丢失。 寻找罪魁祸首,你去看看文件的历史,并注意...你的变化甚至没有列出!? 这里发生的事情是,Git提交历史记录是一棵树,有时候历史记录与实际的文件树历史记录不一样。在合并提交将文件恢复到其原始状态的情况下尤其如此。在这种情况下,默认的历史记录视图实际上不会显示所有的变化,因为从技术上来说文件没有改变。

在上述情况下,Git会意识到它可以简化的历史和“变化”,你最有可能寻求从日志被删除。

除非你以前碰到这个问题,结果往往是大量的头发拉,不知道在哪里到底为什么我的变化去了?

来源和更多的细节:https://www.visualstudio.com/en-us/articles/git-log-history-simplification

+0

在我的情况下,有人将更改的文件夹(在提交E和F中)添加到.gitignore文件中,并将提交/合并到主分支。问题是,如果提交/合并包含代码恢复/回滚,此回滚更改将显示在提交详细信息中?在我的情况下,这似乎不是。 –

+0

@AlexCube如果E和F与您所查看的文件('A-B-C-D-E-F')无关,则提交E和F不应显示在文件历史记录中。所以请检查您查看历史文件或整个回购。 –