GIT - 整套变化在未知点反转

时间:2012-04-12 17:40:09

标签: git github

我遇到了一些很难追踪到底发生的事情。我们有一个'发展'和'主'分支。新的变化取自'master'然后合并为'development'然后一旦好,我们将新的分支合并为'master'。

在过去几周的某个时候,一系列变化在发展中被逆转。我不知道这是怎么发生的,或者怎么可能。无论如何,如果我可以进入一个文件的历史并看到合并它反转它,那将是很好的,但它显示好像最后一次合并是来自一年前。

我能想到的唯一真正的方法是直接通过提交哈希并重置头部并查看我在哪里。但这似乎不切实际。有没有更简单的方法呢?

OR有没有办法查看过去的合并并查看哪些文件受其影响?就像合并分支时一样,你总是在控制台中看到哪些文件在哪些行被更改的输出..但是在git文件历史记录中,大部分文件可能都没有显示出来。

也有人知道为什么会这样吗?我已经看过它发生过几次了。我合并时有时会抓住它。就像我将一个新分支合并到另一个分支中我知道我在最后一次提交中只更改了一个文件,但它改变了大量其他文件。 Master分支在一大堆更新上大约落后一年,所以我想是因为某种原因,当创建了一个来自master的新分支并合并到dev中时它也切换了所有其他文件。很奇怪,因为我们总是这样做,99%的时间只更改已更改的文件。我不明白!

1 个答案:

答案 0 :(得分:1)

有一些git技巧可以帮助你。

首先,git show <commit hash>将显示特定提交中所做的所有更改。 git blame <filename>将显示一个文件,并逐行告诉您哪些提交更改了该文件。

[在评论中添加]:

git diff <ref1>...<ref2>将显示两次提交之间的总差异。在合并的情况下,这有点奇怪,您可能想要做的是git diff HEAD <merge_parent_1>git diff HEAD <merge_parent_2>,以查看每个分支带到表中的内容。

最后,如果你有一个已知良好的旧提交(比如你用git show找到它),你可以使用git bisect逐步执行二进制搜索,找到事情变得棘手的提交。< / p>