我们的dev分支发生了一些事情,发布分支中的很多代码都被合并到了它中。我试图追踪这些变化发生的地方,但我得到了一些非常令人费解的结果。当我运行git diff HEAD@{2}
时,它会显示一系列更改,包括几个月内未触及的许多文件,这意味着HEAD@{2}
是我所看到的带来错误代码的提交。但是,如果我运行git show HEAD@{2}
,它会显示一个非常无害的提交,只触及两个文件。此外,当我运行git reset --hard HEAD@{2}
时,它似乎解决了问题,并在我尝试重置两次然后使用git reset --hard origin/dev
解除它之后将所有奇怪现象加满,现在看来提交带有所有额外代码在HEAD@{1}
。
我似乎无法做出正面或反面的意见,所以任何建议/指示/提示或技巧都会受到欢迎,但一些令我困惑的指导性问题是:如果有的话,这些代码如何进入分支机构?没有合并提交?如果有人从生产分支机构中选择了一个提交到开发分支的提交,那可能与此相关吗? git show
和git diff
如何解决提交有什么不同(如果有的话)?
目前的理论我已经给出了有限的git知识:似乎这些变化不是任何提交的一部分,但不知何故在HEAD@{2}
左右进入树,所以diff
显示变化为它遍历对象树,但show
没有看到它们,因为它们不属于提交。这有什么意义,还是我离开基地?
无论哪种方式,感谢您提供任何帮助!